Python 2个网络摄像头feed';不工作opencv
我正在使用Ubuntu13.10以及opencv 2.4.9和Python2.7。 我已经编写了以下代码,但在运行时似乎失败了Python 2个网络摄像头feed';不工作opencv,python,opencv,webcam,Python,Opencv,Webcam,我正在使用Ubuntu13.10以及opencv 2.4.9和Python2.7。 我已经编写了以下代码,但在运行时似乎失败了 import cv2 c1=cv2.VideoCapture(2) #camera id c2=cv2.VideoCapture(1) #camera id while(True): ret,frame = c1.read() ret,frame2 = c2.read() frame = cv2.cvtColor(fr
import cv2
c1=cv2.VideoCapture(2) #camera id
c2=cv2.VideoCapture(1) #camera id
while(True):
ret,frame = c1.read()
ret,frame2 = c2.read()
frame = cv2.cvtColor(frame,0)
frame2 = cv2.cvtColor(frame2,0)
cv2.imshow('frame',frame)
cv2.imshow('frame2',frame2)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
c1.release()
c2.release()
cv2.destroyAllWindows()
但在Ubuntu中运行此命令时,我会遇到以下错误:
VIDIOC_QUERYMENU: Invalid argument
libv4l2: error turning on stream: Invalid argument
VIDIOC_STREAMON: Invalid argument
OpenCV Error: Assertion failed (scn == 3 || scn == 4) in cvtColor, file
/build/buildd/opencv-2.4.5+dfsg/modules/imgproc/src/color.cpp, line 3358
Traceback (most recent call last):
File "/home/bini/KV/IP_Proj/webcam basics opencv.py", line 8, in <module>
frame2 = cv2.cvtColor(frame2,0)
cv2.error: /build/buildd/opencv-2.4.5+dfsg/modules/imgproc/src/color.cpp:3358: error:
(-215) scn == 3 || scn == 4 in function cvtColor
VIDIOC\u QUERYMENU:参数无效
libv4l2:打开流时出错:参数无效
VIDIOC_STREAMON:参数无效
OpenCV错误:cvtColor文件中的断言失败(scn==3 | | scn==4)
/build/buildd/opencv-2.4.5+dfsg/modules/imgproc/src/color.cpp,第3358行
回溯(最近一次呼叫最后一次):
文件“/home/bini/KV/IP_Proj/webcam basics opencv.py”,第8行,在
frame2=cv2.CVT颜色(frame2,0)
cv2.error:/build/buildd/opencv-2.4.5+dfsg/modules/imgproc/src/color.cpp:3358:错误:
函数cvtColor中的(-215)scn==3 | | scn==4
同样的代码在windows上也能正常工作。
有人能帮我解释一下为什么会发生这样的事吗。。???我有一个好主意
提前感谢您的一个(或两个)摄像头未正确初始化。我刚刚在我的机器(Ubuntu14.04)上运行了你的代码,两个画面都显示了我连接的两个摄像头的实时视图。您可以在或中查看两个摄像头吗
我确实收到了一大堆这样的信息:
VIDIOC_QUERYMENU: Invalid argument
错误,但这两种错误都不是:
libv4l2: error turning on stream: Invalid argument
VIDIOC_STREAMON: Invalid argument
对于linux,如果您使用的是1个摄像头,首先您必须将摄像头id更改为0,但您似乎希望使用2个摄像头,这是因为摄像头使用的分辨率、帧率和协议会使USB连接过载,所以请阅读链接!这也是连接并使用linux网络摄像头的基本代码:
import numpy as np
import cv2
cap = cv2.VideoCapture(0)
#set the width and height, and UNSUCCESSFULLY set the exposure time
cap.set(3,1080)
cap.set(4,1024)
cap.set(15, 0.1)
while True:
ret, img = cap.read()
cv2.imshow("input",img)
key = cv2.waitKey(10)
if key == 27:
break
cv2.destroyAllWindows()
cv2.VideoCapture(0).release()
现在我的两个摄像头都工作了,在另一个代码中(这是正确的),我得到了这个错误:
HIGHGUI错误:V4L:index 1不正确代码>警告:无法打开视频源:1
警告:无法打开视频源:synth
如何修复此错误..1是您的相机id吗?如果是这样,我想它一定是0或3或。。。t通过lsusb
命令访问其id。是的。1是我的摄像头id。因为使用opencv运行单个摄像头的代码,摄像头id=1用于我的外部摄像头。那么您是否尝试了其他id?阅读我在answerid's's's is 1和2中的链接。他们为两个摄像头编写了一个更简单的代码,只显示提要。但不知何故,在所有其他代码中(甚至在opencv的示例代码中)它都不起作用。hi@abarry,我遇到了“libv4l2:错误打开流:无效参数VIDIOC_STREAMON:无效参数”的相同问题cheese给出的错误是“从网络摄像头播放视频时出错”。你有什么解决办法吗?听起来你的网络摄像头驱动程序不工作了。您可能想搜索您的特定相机,看看哪里出了问题(也许dmesg可以提供提示?),如果您根本无法使相机联机,OpenCV几乎不可能工作。