【发布时间】:2016-05-26 21:52:03
【问题描述】:
我在许多网站(包括堆栈溢出)上搜索了我的问题的解决方案。我正在尝试使用 OpenCV 将我的网络摄像头中的视频保存在我的 Raspberry 中。从理论上讲,我的代码工作正常(我可以在窗口中看到我的网络摄像头,我可以看到 python 打印“框架”),但是当它保存文件时,我什么也看不到。我发现我应该在 FourCC 中更改编解码器,但它没有任何改变。
我的代码:
#!/usr/bin/python
import cv2
import numpy as np
def InitCamera():
cap = cv2.VideoCapture(0)
if cap is None:
print('No camera access')
else:
print('Camera init done')
return cap
def InitWriter():
fps = 20
size = (640,480)
outFile = 'output.mp4'
#fourcc = cv2.cv.CV_FOURCC('D','I','V','X')
#fourcc = cv2.cv.CV_FOURCC('R','G','B',' ')
#fourcc = cv2.cv.CV_FOURCC('Y','U','Y','2')
#fourcc = cv2.cv.CV_FOURCC('Y','U','Y','U')
#fourcc = cv2.cv.CV_FOURCC('U','Y','V','Y')
#fourcc = cv2.cv.CV_FOURCC('I','4','2','0')
#fourcc = cv2.cv.CV_FOURCC('I','Y','U','V')
#fourcc = cv2.cv.CV_FOURCC('Y','U','1','2')
#fourcc = cv2.cv.CV_FOURCC('Y','8','0','0')
#fourcc = cv2.cv.CV_FOURCC('G','R','E','Y')
#fourcc = cv2.cv.CV_FOURCC('B','Y','8',' ')
#fourcc = cv2.cv.CV_FOURCC('Y','1','6',' ')
#fourcc = cv2.cv.CV_FOURCC('X','V','I','D')
#fourcc = cv2.cv.CV_FOURCC('M','J','P','G')
fourcc = cv2.cv.CV_FOURCC('M','P','E','G')
out = cv2.VideoWriter(outFile, fourcc, fps, size, 1)
if out is None:
print('No video access')
else:
print('Video init done')
return out
def CapVideo(cap,out):
while(cap.isOpened()):
ret, frame = cap.read()
if ret==True:
out.write(frame)
print('frame')
cv2.imshow('frame',frame)
if cv2.waitKey(1) & 0xFF==ord('q'):
break
else:
break
print 'Done'
cap.release()
out.release()
cv2.destroyAllWindows()
if __name__ == '__main__':
cam = InitCamera()
out = InitWriter()
CapVideo(cam,out)
【问题讨论】:
-
找到解决方案了吗/
标签: python opencv raspberry-pi video-capture