<p>好消息,问题解决了。打开视频选择了错误的解码器。在我的例子中是“YU12”,但网络摄像头使用:YUYV。我必须手动设置-(功能:set(cv2.CAP_PROP_FOURCC,FOURCC))。工作代码如下:</p>
<pre><code>import os
import sys
import cv2
videoSource = 0
def getFrame():
""""""
cv_cam_0 = cv2.VideoCapture(videoSource)
if not cv_cam_0.isOpened():
raise Exception('video source: %s could not be opened' %(str(videoSource)))
cv_cam_0.set(cv2.CAP_PROP_FRAME_WIDTH, 1280)
cv_cam_0.set(cv2.CAP_PROP_FRAME_HEIGHT, 720)
fourcc = cv2.VideoWriter_fourcc(*'YUYV')
ret = cv_cam_0.set(cv2.CAP_PROP_FOURCC, fourcc)
codec_char_code = int(cv_cam_0.get(cv2.CAP_PROP_FOURCC))
a = chr(0x000000FF& codec_char_code)
b = chr((0x0000FF00& codec_char_code) >> 8)
c = chr((0x00FF0000& codec_char_code) >> 16)
d = chr((0xFF000000& codec_char_code) >> 24)
print('codec 4 char code: ' + a+b+c+d)
#ret, raw_frame = cv_cam_0.read()
ret = cv_cam_0.grab()
ret, raw_frame = cv_cam_0.retrieve()
cv2.imwrite('/tmp/testRaw.png', raw_frame)
def main(args):
getFrame()
sys.exit()
if __name__ == "__main__":
main(sys.argv)
</code></pre>