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

2024-04-25 18:56:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在跟踪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 Error: Assertion failed (scn == 3 || scn == 4) in cvtColor, file /io/opencv/modules/imgproc/src/color.cpp, line 9748
Traceback (most recent call last):
File "capture.py", line 11, in
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.error: /io/opencv/modules/imgproc/src/color.cpp:9748: error: (-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时,它也会显示来自网络摄像头的视频。只有一个摄像头连接到电脑

有什么建议吗?在


Tags: theindev网络false视频opencv2
1条回答
网友
1楼 · 发布于 2024-04-25 18:56:11

你可能错过了FFMPEG。OpenCV需要编码信息来解码ffmpeg提供的视频、打开的摄像机等。在

在Windows上安装FFmpeg的步骤如下所示http://www.wikihow.com/Install-FFmpeg-on-Windows。遵循与此类似的Linux可能会解决您的问题

相关问题 更多 >