OpenCV中的图像序列到视频

时间:2016-02-22 20:47:48

标签: python opencv video

我有* .tif格式的一系列图像,我想用来制作视频。我在Python 2.7中使用OpenCV 3.1.0。以下是我的代码片段:

import cv2
import numpy as np

nIMAGES = 10
files = glob.glob(DIR + '\\' + tpname +'\\*.tif' )
image_stack = np.empty((500, 220, nIMAGES))
mov = DIR + '\\' + tpname + '\\' + tpname + '_mov.avi'
MOV = cv2.VideoWriter(filename=mov, fourcc=cv2.VideoWriter_fourcc('F', 'M', 'P', '4'), fps=2, frameSize=(220, 500)) # frame size is 220 x 500

for i in np.arange(0, nIMAGES):
    print 'Working on: ' + files[i][-14:-4]
    image = cv2.imread(files[i], 0)
    crop_image = image[50:550, 252:472] #crop y:h, x:w

 # now let's create the movie:
    crop_image = cv2.applyColorMap(crop_image, cv2.COLORMAP_JET)
    MOV.write(crop_image)

MOV.release()

当我运行此代码时,我创建一个0 Kb的AVI文件(它没有保存任何内容)。

我相信我错过了frame = cv2.VideoCapture.read(crop_image)之类的东西,在这种情况下我会将写行转换为MOV.write(frame)。但是,我得到AttributeError,因为VideoCapture.read不是属性。

我正在使用此OpenCV网页作为我的向导:http://docs.opencv.org/2.4/modules/highgui/doc/reading_and_writing_images_and_video.html

1 个答案:

答案 0 :(得分:1)

我必须做两处修改才能让它发挥作用:

  1. 根据有关此问题的建议:OpenCV 2.4 VideoCapture not working on Windows我必须将fmpeg.dll文件复制到我的Python目录(C:\Anaconda)。我还必须重新标记文件夹以包含我的opencv(3.1.0)的版本,例如opencv_ffmpeg310_64.dll
  2. 我需要做的另一项更改是将我的编解码器更改为MJPG
  3. 非常感谢@Micka帮助我很快。