我正在关注 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/

    10-12 21:23