两个摄像头无法在OpenCV中工作
我正在使用 Ubuntu 13.10,配合 OpenCV 2.4.9 和 Python 2.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
同样的代码在 Windows 上运行得很好。
有人能帮我看看这是为什么吗?我一点头绪都没有。
提前谢谢大家!
2 个回答
2
在Linux系统中,如果你只用一台摄像头,首先你需要把摄像头的编号改成0。不过,看起来你想同时使用两台摄像头。这是因为你摄像头的分辨率、帧率和使用的协议让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()