首页 文章

如何使用OpenCV从网络摄像头读取视频?

提问于
浏览
4

我正在关注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错误:断言失败(scn == 3 || scn == 4)在cvtColor中,文件/io/opencv/modules/imgproc/src/color.cpp,第9748行追踪(最近一次调用最后一次):文件“捕获.py“,第11行,灰色= cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)cv2.error:/io/opencv/modules/imgproc/src/color.cpp:9748:错误:(-215)scn == 3 || scn == 4在函数cvtColor中

进一步检查,似乎:

  • ret 始终是 False .

  • 添加 cap.get(3) (以获取图片的宽度)返回 0.0 .

  • 如果我测试 cap.isOpened() ,结果总是 False .

  • 如果我添加对 cap.open(0) 的调用, open 也会返回 False .

  • 调用 cap.open("/dev/video0") 什么都没改变 .

  • cap = cv2.VideoCapture("/dev/video0") 替换 cap = cv2.VideoCapture(0) 无效 .

在VLC中打开 /dev/video0 会显示来自网络摄像头的视频 . 当我打开Cheese时,它还会显示来自网络摄像头的视频 . 只有一台摄像机连接到PC .

有什么建议?

1 回答

  • 0

    你可能错过了FFMPEG . OpenCV需要编解码器信息来解码ffmpeg提供的视频,打开相机等 .

    在Windows上安装FFmpeg的步骤详见http://www.wikihow.com/Install-FFmpeg-on-Windows . 遵循Linux相当于此可能会解决您的问题

相关问题