Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2个网络摄像头feed';不工作opencv_Python_Opencv_Webcam - Fatal编程技术网

Python 2个网络摄像头feed';不工作opencv

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

我正在使用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(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几乎不可能工作。