我正在关注 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()
它失败并显示以下输出:
进一步检查,似乎:
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。有什么建议么?
最佳答案
您可能缺少 FFMPEG。 OpenCV 需要编解码器信息来解码 ffmpeg 提供的视频、打开相机等。
在 http://www.wikihow.com/Install-FFmpeg-on-Windows 中详细介绍了在 Windows 上安装 FFmpeg 的步骤。遵循与此等效的 Linux 可能会解决您的问题
关于python - 如何使用 OpenCV 从网络摄像头读取视频?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44347014/