使用OpenCV保存视频

时间:2014-04-17 04:08:46

标签: python opencv video ffmpeg

以下是我用于访问IP摄像头并保存传入视频流的Python脚本:

import cv2
from cv2 import cv
writer=cv2.VideoWriter("vid.avi",cv.CV_FOURCC('X', '2', '6', '4'), 24, (320,240))
def cvloop():    
    stream=urllib.urlopen('URL of the camera')
    bytes=''
    while True:
        bytes+=stream.read(1024)
        a = bytes.find('\xff\xd8')
        b = bytes.find('\xff\xd9')
        if a!=-1 and b!=-1:
            jpg = bytes[a:b+2]
            bytes= bytes[b+2:]
            i = cv2.imdecode(np.fromstring(jpg, dtype=np.uint8),cv2.CV_LOAD_IMAGE_COLOR)            
            tki = ImageTk.PhotoImage(Image.fromarray(cv2.cvtColor(i, cv2.COLOR_BGR2RGB)))
            cv2.imshow('i',i)
            writer.write(i)
            if cv2.waitKey(1) ==27:
                exit(0)

现在,如果您想知道我为什么要从流中解析jpg图像,可以找到答案here。答案解释了一切。

至于视频编写器脚本,我已经参考了可以找到的here的OpenCV文档。

现在我没有使用默认的编解码器列表,而是使用H-264,但我已经尝试了系统上安装的所有编解码器。

问题:现在问题在于执行程序正在制作视频文件,在运行它时我什么都没看到。此外,在使用软件GSpot分析视频时,我获得了视频中的帧数。 FFMPEG的情况也是如此。我哪里错了?

Camera: Axis IP Camera M1103
OS: Windows 7 32bit

0 个答案:

没有答案