【发布时间】:2014-04-30 08:31:52
【问题描述】:
我想使用 opencv 和 python 从连接到我的计算机的 2 个网络摄像头捕获图像。这是我写的代码:
#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,文件 ........\opencv\modules\imgproc\src\color.cpp 中断言失败 (scn == 3 || scn == 4),第 3648 行 回溯(最近一次通话最后): 文件“C:\Users\Administrator\Desktop\capturing.py”,第 15 行,在 rgb_right = cv2.cvtColor(frameR,0) cv2.error: ........\opencv\modules\imgproc\src\color.cpp:3648: 错误: (-215) scn == 3 ||函数 cv::cvtColor 中的 scn == 4
[在 1.5 秒内完成,退出代码为 1]
【问题讨论】:
-
请避免使用旧的 cv api。将两者混合是灾难的收据
-
如果您的相机需要一些“预热”时间,您必须忽略第一帧(无效/空)。检查 read() 中的 ret 值,然后继续