Python 从2个网络摄像头捕获
我想使用opencv和python从连接到我的计算机的两个网络摄像头中捕获图像。这是我写的代码:Python 从2个网络摄像头捕获,python,opencv,Python,Opencv,我想使用opencv和python从连接到我的计算机的两个网络摄像头中捕获图像。这是我写的代码: #to take snapshot from two webcams simultaneously import cv2 import cv2.cv as cv import numpy as np left = cv2.VideoCapture(1) #capturing video from device port 1 aka webcam1
#to take snapshot from two webcams simultaneously
import cv2
import cv2.cv as cv
import numpy as np
left = cv2.VideoCapture(1) #capturing video from device port 1 aka webcam1
right = cv2.VideoCapture(2) #capturing video from device port 2 aka webcam2
capture_left=cv.CaptureFromCAM(1)
capture_right =cv.CaptureFromCAM(2)
while(True):
ret,frameL = left.read()
ret1,frameR = right.read()
rgb_left = cv2.cvtColor(frameL,0)
rgb_right = cv2.cvtColor(frameR,0)
cv2.imshow('frameL',rgb_left)
cv2.imshow('frameR',rgb_right)
k=cv2.waitKey(0)
if k == 27: # wait for ESC key to break
break
elif k == 32: # wait for spacebar to click snapshot
il=cv.QueryFrame(capture_left)
cv.SaveImage("defaultL.jpg",il)
ir=cv.QueryFrame(capture_right)
cv.SaveImage("defaultR.jpg",ir)
left.release()
right.release()
cv2.destroyAllWindows()
但在执行时,这是一个错误:
OpenCV错误:cv::cvtColor文件中的断言失败(scn==3 | | scn==4)….\OpenCV\modules\imgproc\src\color.cpp,第3648行
回溯(最近一次呼叫最后一次):
文件“C:\Users\Administrator\Desktop\capturing.py”,第15行,在
rgb_right=cv2.CVT颜色(成帧器,0)
cv2.error:…\opencv\modules\imgproc\src\color.cpp:3648:函数cv::cvtColor中的错误:(-215)scn==3 | | scn==4
[在1.5s内完成,退出代码为1]添加以下行以检查数据。如果有数据,处理,如果没有,继续
if np.shape(frameL) == ():
do nothing and let it pass
else
do the shit you want
if np.shape(frameR) == ():
do nothing and let it pass
else
do the shit you want
另外,添加对频道的检查
if(len(frameL.shape)>2)
rgb_left = cv2.cvtColor(frameL,0)
else
rgb_left = frameL
这将解决所有断言失败的问题
注:这种方法可能不会同时提供数据。所以不要期望完美的立体声深度输出
如果你想同时实现实时,你需要硬件同步,这是你相机的触发器。然后是摄影机流的多线程事件句柄。然后绑定数据进行处理
我用C++做了类似的事情。python对整个过程不太确定
这是根据经验说的 请避免使用旧的cv api。如果你的相机需要一些“预热”时间,你可以忽略第一帧(无效/空)。检查read()中的ret值,然后继续