我正在使用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
答案 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