我正在关注the official documentation,尝试从网络摄像头中读取视频。当我从文档中运行一段代码时:
import numpy as np
import cv2
cap = cv2.VideoCapture(0)
while(True):
# Capture frame-by-frame
ret, frame = cap.read()
# Our operations on the frame come here
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# Display the resulting frame
cv2.imshow('frame',gray)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()
它失败并输出以下内容:
OpenCV错误:cvtColor中的断言失败(scn == 3 || scn == 4),文件/io/opencv/modules/imgproc/src/color.cpp,第9748行 追溯(最近的呼叫最后):
文件“capture.py”,第11行,在 gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
cv2.error:/io/opencv/modules/imgproc/src/color.cpp:9748:错误:(-215)scn == 3 || scn == 4 in function cvtColor
进一步检查,似乎:
ret
始终为False
。cap.get(3)
(以获取图片的宽度)会返回0.0
。cap.isOpened()
,则结果始终为False
。cap.open(0)
的来电,open
也会返回False
。cap.open("/dev/video0")
不会改变任何内容。cap = cv2.VideoCapture(0)
替换cap = cv2.VideoCapture("/dev/video0")
无效。在VLC中打开/dev/video0
会显示来自网络摄像头的视频。当我打开Cheese时,它还会显示来自网络摄像头的视频。只有一台摄像机连接到PC。
有什么建议吗?
答案 0 :(得分:0)
你可能错过了FFMPEG。 OpenCV需要编解码器信息来解码ffmpeg提供的视频,打开相机等。
此处详细介绍了在Windows上安装FFmpeg的步骤http://www.wikihow.com/Install-FFmpeg-on-Windows。遵循Linux相当于此可能会解决您的问题