我刚开始在运行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
,但分解时的行为是相同的。
提前感谢您的帮助!马亭