外部网络摄像头不适用于Opencv和Python

时间:2014-01-22 17:32:04

标签: python opencv webcam

我正在使用Python cv2模块来运行程序。

我可以访问内置的网络摄像头,但是当我使用外部网络摄像头时,它无效。

我使用了所有代码,例如

VideoCapture(1) # or any other no.s like 0,1,2,3 etc etc.

我甚至使用设备管理器禁用了内置网络摄像头。

但没有任何作用。我正在使用pythonxy。我也尝试过命令提示符。它仍然无效。

我收到以下错误

runfile('C:/Users/Prashant/Documents/Python Scripts/Circledetection.py',     wdir=r'C:/Users/Prashant/Documents/Python Scripts')
OpenCV Error: Assertion failed (scn == 3 || scn == 4) in unknown function, file ..\..\..\modules\imgproc\src\color.cpp, line 3402
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python27\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 540, in runfile
    execfile(filename, namespace)
  File "C:/Users/Prashant/Documents/Python Scripts/Circledetection.py", line 27, in <module>
    prev_gray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
cv2.error: ..\..\..\modules\imgproc\src\color.cpp:3402: error: (-215) scn == 3 || scn == 4

5 个答案:

答案 0 :(得分:2)

您提到了VideoCapture(0)VideoCapture(1) “1”表示外部摄像机编号。

import numpy as np import cv2

cap = cv2.VideoCapture(1) 
while(1):
    ret, frame = cap.read()
    #print(height)
    #cv2.imshow("Cropped Image", crop_img)
    #gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    cv2.imshow('frame',frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release() cv2.destroyAllWindows()

答案 1 :(得分:1)

该断言意味着您的图像没有3个(RGB,BGR等)通道或4个通道(3个通道+ alpha)。显然,这可能是由根本不存在的图像引起的。

虽然这可能是因为你的相机不能正常工作,但同样可能的是你的相机没有为前几个读取()提供可用的帧,因为它仍然是&#39 ;制备&#39;本身。

解决这个问题的最简单方法,假设您使用类似的东西 retv, frame = cam.read() 是检查if frame:if retv:

如果没有图像,请跳过处理,并且在几帧内你应该有可读的输入。

答案 2 :(得分:0)

您确定使用的是正确的索引吗?使用Videocapture,您也可以尝试使用Videocapture(-1),因为外部凸轮有时会显示为输入列表中的最后一个元素。 Videocapture也可以返回设备名称,因此您可以尝试遍历输入设备索引列表并打印它们的&#34;友好名称&#34;,以确保您使用正确的名称。

答案 3 :(得分:0)

OpenCV需要以下依赖项才能与USB摄像机配合使用。通过以下命令安装依赖项:

  • libav视频输入/输出开发库

    sudo apt-get install libavformat-dev libavutil-dev libswscale-dev
    
  • Video4Linux摄像机开发库

    sudo apt-get install libv4l-dev
    
  • OpenGL开发库(允许创建图形窗口)

    sudo apt-get install libglew-dev
    
  • GTK开发库(允许创建图形窗口)

    sudo apt-get install libgtk2.0-dev
    

答案 4 :(得分:0)

谢谢它对我有用。

OpenCV 需要以下依赖项才能与 USB 摄像头配合使用。从以下命令安装依赖项:

libav 视频输入/输出开发库

sudo apt-get install libavformat-dev libavutil-dev libswscale-dev Video4Linux 相机开发库

sudo apt-get install libv4l-dev OpenGL 开发库(允许创建图形窗口)

sudo apt-get install libglew-dev GTK 开发库(允许创建图形窗口)

sudo apt-get install libgtk2.0-dev