Python 如何使用OpenCV从网络摄像头读取视频?
我正在跟踪,试图从网络摄像头读取视频。当我运行文档中的代码时:Python 如何使用OpenCV从网络摄像头读取视频?,python,opencv,webcam,video-capture,Python,Opencv,Webcam,Video Capture,我正在跟踪,试图从网络摄像头读取视频。当我运行文档中的代码时: 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_BGR2
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文件/io/OpenCV/modules/imgproc/src/color.cpp第9748行中的断言失败(scn==3 | | scn==4)回溯(最近一次呼叫最后一次):
文件“capture.py”,第11行,在
灰色=cv2.CVT颜色(边框,cv2.COLOR\u bgr2灰色)
cv2.error:/io/opencv/modules/imgproc/src/color.cpp:9748:error:(-215)函数cvtColor中的scn==3 | | scn==4 进一步检查,似乎:
总是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”)
/dev/video0
,将显示来自网络摄像头的视频。当我打开奶酪时,它也会显示网络摄像头的视频。只有一个摄像头连接到电脑
有什么建议吗?您可能缺少FFMPEG。OpenCV需要编解码器信息来解码ffmpeg提供的视频、开放式摄像机等
此处详细介绍了在Windows上安装FFmpeg的步骤。遵循与此类似的Linux操作可能会解决您的问题您是如何安装opencv的?你的操作系统是什么?你使用什么版本的python?你是如何安装Opencv的?@eyllanesc:我安装了Opencv(当然也重新安装了一次)。自从我发布了这个问题,我尝试了C++的例子,它是有效的。我正在使用最新版本的Ubuntu和Python 3。您是从源代码编译的,还是从Ubuntu存储库安装的。@eyllanesc:我是根据源代码编译的,遵循的是中的说明。您是使用pip或Anaconda安装opencv的吗?