OpenCV Python cv2.VideoCapture.read()返回错误的图像

时间:2014-04-27 01:23:25

标签: python image opencv video osx-mavericks

我刚开始在运行OpenCV 2.4.8.2的MacBook Pro Retina上Python 2.7.6使用OS X 10.9.2。我的主要目标是使用一些NumPy - 数组制作视频文件。我还想做反过来:将视频分解为单独的帧(因此在NumPy - 数组中)。

要制作视频,请使用以下代码:

import cv2

# Composes a movie from separate frames.
videoMaker = cv2.VideoWriter("videoTest.mov", cv2.cv.CV_FOURCC('m', 'p', '4', 'v'), 1, (256, 256))
if (videoMaker.isOpened()):
    videoMaker.write(cv2.imread("videoTestFrame0.jpg"))
    videoMaker.write(cv2.imread("videoTestFrame1.jpg"))
    videoMaker.write(cv2.imread("videoTestFrame2.jpg"))
    videoMaker.release()

这段代码似乎工作正常 - videoTest.mov已创建,可以在Quicktime中播放,长达3秒,由3个不同的帧组成。

要加载视频,我已直接放在上面的代码片段下:

# Decomposes a movie into separate frames.
videoReader = cv2.VideoCapture("videoTest.mov")
count = 0
while True:
    gotImage, image = videoReader.read()
    if (gotImage):
        cv2.imwrite("videoTestDecomposedFrame%d.jpg" %count, image)
        count += 1
    else:
        break

问题:在检查3个已分解的帧时,电影的第一帧(videoTestFrame0.jpg其中一个,而最后一帧电影(videoTestFrame2.jpg)的存储两次

如何修复此问题并从视频中检索videoTestFrame0.jpg,而无需通过将第一帧放入两次来修改它? cv2.VideoCapture.read()可能有问题吗?我尝试将电影保存为videoTest.avi而不是videoTest.mov,但分解时的行为是相同的。

提前感谢您的帮助!马亭

0 个答案:

没有答案