我正在使用 Python 和 OpenCV 在 Windows XP 中编写一个程序,它将从网络摄像头捕获的图像帧添加到视频 (.avi) 中,但前提是满足特定条件。出于测试目的,此条件是基于时间的,但这会改变。唯一的问题是,我的程序没有输出任何东西。一切似乎都运行良好,但是当我检查它应该输出的 .avi 文件时,什么都没有。
这是我的代码。有人告诉我我的风格有点非传统,但希望你能看到我在做什么。先感谢您。
import cv, time ##Import modules
cv.NamedWindow("Experiment", cv.CV_WINDOW_AUTOSIZE) ##Open window
camera_index = 1
capture = cv.CaptureFromCAM(camera_index)
x = time.clock()+5
try:
while 1:
if time.clock() < x: ##Clock to capture 5 seconds of footage
frame = cv.QueryFrame(capture) ##Capture webcam frame
cv.ShowImage("Experiment", frame) ##Display image
writer = cv.CreateVideoWriter("C:\/test.avi", cv.CV_FOURCC('F', 'M', 'P', '4'),
24, (640, 480), 1) ##Write video file (codec = MPEG-4 - .avi)
if writer: ##Write frame to file
cv.WriteFrame(writer, frame)
if not writer: ##Failure to register video writer
print "Error: Video writer malfunction"
sys.exit(1)
cv.DestroyWindow("Experiment")
break
else:
if writer:
print "Video capture succeeded"
cv.DestroyWindow("Experiment")
camera_index += 1
capture = cv.CaptureFromCAM(-1)
break
c = cv.WaitKey(10)
if(c=="n"):
camera_index += 1
capture = cv.CaptureFromCAM(-1)
except:
print "Video capture failed" ##Total systems failure escape routine!!!
cv.DestroyWindow("Experiment")
- 编辑 -
如果我将cv.CV_FOURCC('F', 'M', 'P', '4')
第 12 行更改为“-1”,则会输出视频,但它是 0 字节。