视频处理基本技术(取帧合帧)

Posted 悟乙己

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了视频处理基本技术(取帧合帧)相关的知识,希望对你有一定的参考价值。

目前暂时更新

1 逐帧拆解

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:
        if isinstance(image, np.ndarray) :
            cv2.imencode('.jpg', image)[1].tofile(frames_save_path + "/frame%d.jpg" % count)
    # if count == 20:
    #   break
  print(count)

其中time_interval一般取1

2 帧合成视频

def Composite_video(im_list,video_dir,fps = 30):
    # fourcc = cv2.cv.CV_FOURCC('M','J','P','G') #opencv版本是2
    fourcc = cv2.VideoWriter_fourcc(*'XVID') #opencv版本是3
    
    img = Image.open(im_list[0])
    img_size = img.size #获得图片分辨率,im_dir文件夹下的图片分辨率需要一致
    
    
    videoWriter = cv2.VideoWriter(video_dir, fourcc, fps, img_size)
    # count = 1
    for il in im_list:
        im_name = il
        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')

im_list:要合成视频,帧图片列表,需要按照顺序;
video_dir:图像存放地址

以上是关于视频处理基本技术(取帧合帧)的主要内容,如果未能解决你的问题,请参考以下文章

视频处理基本技术(取帧合帧)

iOS视频录制压缩导出取帧

FFMPEG 无法取帧并另存为图像

如何用opencv读取avi视频并在界面截图进行人脸检测

怎么样把AVI转成GIF啊

Qt C++——多线程视频帧变换