【问题标题】:Capturing From 2 webcams从 2 个网络摄像头捕获
【发布时间】: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 值,然后继续

标签: python opencv


【解决方案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对整个过程不太确定。

这是经验之谈。

【讨论】:

    猜你喜欢
    • 2013-02-09
    • 1970-01-01
    • 2013-01-18
    • 2015-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多