首页 > 编程语言 >python 视频拆分成帧,帧合成视频

python 视频拆分成帧,帧合成视频

时间:2023-05-31 12:33:34浏览次数:51  
标签:count 视频 python 合成视频 im __ frames path dir

参考python将视频切分成帧&&帧合成视频,下面的代码来自这篇博客。

# ==================== 视频拆分成帧 ===================================
import cv2
 
def video2frame(videos_path,frames_save_path,time_interval):
 
  '''
  :param videos_path: 视频的存放路径
  :param frames_save_path: 视频切分成帧之后图片的保存路径
  :param time_interval: 保存间隔
  :return:
  '''
  vidcap = cv2.VideoCapture(videos_path)
  success, image = vidcap.read()
  count = 0
  while success:
    success, image = vidcap.read()
    count += 1
    if count % time_interval == 0:
      cv2.imencode('.jpg', image)[1].tofile(frames_save_path + "/frame%d.jpg" % count)
    # if count == 20:
    #   break
  print(count)
 
if __name__ == '__main__':
   videos_path = 'C:\\Users\\admin\\Desktop\\111\\anno\\MultiSports\\test-basketball\\v_1tefH1iPbGM_c001\\raw frames and video\\v_1tefH1iPbGM_c001.mp4'
   frames_save_path = 'C:\\Users\\admin\\Desktop\\111\\anno\\MultiSports\\test-basketball\\v_1tefH1iPbGM_c001\\raw frames and video\\v_1tefH1iPbGM_c001_frames'
   time_interval = 1   # 隔一帧保存一次
   video2frame(videos_path, frames_save_path, time_interval)



# ======================== 多帧合成视频 ===================================
import cv2
import os
import numpy as np
from PIL import Image
 
 
def frame2video(im_dir,video_dir,fps):
 
    im_list = os.listdir(im_dir)
    im_list.sort(key=lambda x: int(x.replace("frame","").split('.')[0]))  #最好再看看图片顺序对不
    img = Image.open(os.path.join(im_dir,im_list[0]))
    img_size = img.size #获得图片分辨率,im_dir文件夹下的图片分辨率需要一致
 
 
    # fourcc = cv2.cv.CV_FOURCC('M','J','P','G') #opencv版本是2
    fourcc = cv2.VideoWriter_fourcc(*'XVID') #opencv版本是3
    videoWriter = cv2.VideoWriter(video_dir, fourcc, fps, img_size)
    # count = 1
    for i in im_list:
        im_name = os.path.join(im_dir+i)
        frame = cv2.imdecode(np.fromfile(im_name, dtype=np.uint8), -1)
        videoWriter.write(frame)
        # count+=1
        # if (count == 200):
        #     print(im_name)
        #     break
    videoWriter.release()
    print('finish')
 
if __name__ == '__main__':
    im_dir = 'E:/测试/图片/'#帧存放路径
    video_dir = 'E:\测试/test.avi' #合成视频存放的路径
    fps = 30 #帧率,每秒钟帧数越多,所显示的动作就会越流畅
    frame2video(im_dir, video_dir, fps)

  

 

标签:count,视频,python,合成视频,im,__,frames,path,dir
From: https://www.cnblogs.com/picassooo/p/17445777.html

相关文章

  • 果然python是直接可以使用requests去请求https站点的,意味着一般的扫描工具可以直接扫
    #coding:utf-8importrequests#请求地址#url="https://www.qlchat.com"url="https://www.baidu.com"headers={'user-agent':'Mozilla/5.0(WindowsNT10.0;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chro......
  • python 从bulkblacklist信誉查询网站提交查询
    importurllibimporturllib2#importwebbrowserimportreimportsocketdefis_domain_in_black_list(domain,ip):try_time=3url="http://www.bulkblacklist.com/"foriinrange(try_time):try:data=......
  • python avro 数据格式使用demo
    {"name":"UEProcedures","type":"record","fields":[{"name":"imsi","type":"string"},{"name":"time_at","type":&quo......
  • 获取视频截图
    1、使用canvas对video元素进行截图functiongetVideoFrame(video){constcanvas=document.createElement("canvas");canvas.width=video.videoWidth;canvas.height=video.videoHeight;canvas.getContext("2d").drawImage(video,0,0);returncan......
  • [音视频处理] FFmpeg使用指北1-视频解码
    本文将详细介绍如何使用ffmpeg4.4在C++中解码多种格式的媒体文件,这些媒体文件可以是视频、视频流、图片,或是桌面截屏或USB摄像头的实时图片。解码文件后,还将每帧图片转换为OpenCV的Mat格式以供后续使用。目录1基于ffmpeg的媒体文件解码1.1简介1.2详细代码2ffmpeg函数解释2.1......
  • 【Python-Scripts】自动删除Jenkins任务构建历史记录
    任务背景: Jenkins构建历史记录很多,占用服务器磁盘空间较大,根据开发需求定期删除历史记录。 1#!/usr/bin/envpython2#-*-coding:utf-8-*-345importdatetime6importjenkins7importtime8fromjenkinsapi.jenkinsimportJenkins91011def......
  • < Python全景系列-9 > Python 装饰器:优雅地增强你的函数和类
    欢迎来到我们的系列博客《Python全景系列》第九篇!在这个系列中,我们将带领你从Python的基础知识开始,一步步深入到高级话题,帮助你掌握这门强大而灵活的编程语法。无论你是编程新手,还是有一定基础的开发者,这个系列都将提供你需要的知识和技能。**装饰器在Python中扮演了重要的角......
  • python计算IRR公式
    Python计算IRR公式fromscipyimportoptimize#计算现值defxnpv(rate,cashflows):returnsum([cf/(1+rate)**((t-cashflows[0][0]).days/365.0)for(t,cf)incashflows])#计算xirrdefxirr(cashflows,guess=.01):try:returnoptimize.n......
  • python的peft包导入PeftModel时报importerror-cannot-import-name-unknown-location
    一般出现这种问题的原因是该版本的peft包中没有PeftModel,这种情况都需要降级。我验证了以下,我实在alpaca-lora项目中使用peft,alpaca-lora的项目大概在2个月以前更新,而peft包实在最近更新的4.0版本,而2个月以前peft还是2.0版本,所以我果断把peft降到2.0版本,然后问题就解决了。......
  • Python的分布式网络爬虫
    分布式爬虫其实就是指利用多台计算机分布式地从互联网上采集数据的一种爬虫。它可以把大规模的任务分解成若干小规模的,由多台计算机并行进行处理,大大提高了效率和速度。分布式爬虫有很多优势:解决单机爬虫效率低的问题,分布式爬虫可以将任务分配给多个节点并行处理,大大提高了效率和......