2017-06-03 206 views
4

我在关注the official documentation,试图从网络摄像头阅读视频。正如我从文档运行一段代码:如何使用OpenCV从网络摄像头读取视频?

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显示来自网络摄像头的视频。当我打开奶酪时,它也会显示摄像头的视频。只有一台摄像机连接到PC。

有什么建议吗?

+1

你是如何安装opencv的?你的操作系统是什么?你使用什么版本的Python? – eyllanesc

+0

你是如何安装Opencv的? – ZdaR

+0

@eyllanesc:我安装了OpenCV(并且重新安装一次,以确保它)。由于我发布了这个问题,我尝试了C++示例,并且它可以工作。我使用的是最新版本的Ubuntu和Python 3. –

回答

0

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

在Windows上安装FFmpeg的步骤在此处详述http://www.wikihow.com/Install-FFmpeg-on-Windows。继Linux之后,可能会解决你的问题

+0

已安装ffmpeg 2.8.11。 –

+0

你使用pip或Anaconda安装opencv吗? –

相关问题