我正在使用 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
该断言意味着您的图像没有 3 个(RGB、BGR 等)通道或 4 个通道(3 个通道 + alpha)。显然,这可能是由于图像根本不存在造成的。
虽然这可能是因为您的相机无法工作,但您的相机同样可能不会为前几次 read() 提供可用的帧,因为它仍在“准备”本身。
解决这个问题的最简单方法,假设你使用类似的东西
retv, frame = cam.read()
是检查 if frame:
或 if retv:
。
如果没有图像,让它跳过您的处理,并且在几帧内您应该有可读的输入。
您提到
VideoCapture(0)
到VideoCapture(1)
。import cv2
import numpy as np
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()
您确定使用了正确的索引吗?使用
Videocapture
您也可以尝试使用 Videocapture(-1)
,因为外部凸轮有时会显示为输入列表中的最后一个元素。 Videocapture
还可以返回设备名称,因此您可以尝试循环输入设备索引列表并打印它们的“友好名称”,以确保您使用的是正确的名称。
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
谢谢它对我有用。
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
you can try to install virtual environment
pip install virtualenv
then
python -m virtualenv .
then
run you python program with
cv2.VideoCapture(0)