Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用OpenCV从网络摄像头读取视频?_Python_Opencv_Webcam_Video Capture - Fatal编程技术网

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”)
    无效
在VLC中打开
/dev/video0
,将显示来自网络摄像头的视频。当我打开奶酪时,它也会显示网络摄像头的视频。只有一个摄像头连接到电脑


有什么建议吗?

您可能缺少FFMPEG。OpenCV需要编解码器信息来解码ffmpeg提供的视频、开放式摄像机等


此处详细介绍了在Windows上安装FFmpeg的步骤。遵循与此类似的Linux操作可能会解决您的问题

您是如何安装opencv的?你的操作系统是什么?你使用什么版本的python?你是如何安装Opencv的?@eyllanesc:我安装了Opencv(当然也重新安装了一次)。自从我发布了这个问题,我尝试了C++的例子,它是有效的。我正在使用最新版本的Ubuntu和Python 3。您是从源代码编译的,还是从Ubuntu存储库安装的。@eyllanesc:我是根据源代码编译的,遵循的是中的说明。您是使用pip或Anaconda安装opencv的吗?