OpenCV使用单色相机投掷帧到输出得到3张图片而不是1

时间:2018-05-07 11:28:58

标签: python opencv

我使用单色相机oCam-1MGN-U从视频中获取帧。当我想要输出帧到输出时我得到3张图片而不是1.我知道这台相机使用1个频道。我该如何解决这个问题?

if __name__ == '__main__':
   cap = cv2.VideoCapture(1)    # Streamming from camera monochromatic
    while(cap.isOpened()):
        succes, frame = cap.read()
        if(succes):
            cv2.imshow('Orginal',frame)
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break

    cap.release()
    cv2.destroyAllWindows()
    print('End')

我在linux上工作,我得到了三张非常相似的图片:

https://github.com/TheImagingSource/tiscamera/issues/20

框架我所拥有的形状:480,640,3

我尝试了什么:

  • 我已经在OpenCV 3.2和3.4
  • 上进行了测试
  • 获取此框并将其拆分为b, g ,r = cv2.split(frame)并抛出 输出只有一个通道,但我仍然得到3张图片
  • 更改视频流的分辨率

1 个答案:

答案 0 :(得分:1)

听起来这是自2014年以来已知的问题: https://github.com/TheImagingSource/tiscamera/issues/20

  

OpenCV捕获类处于非常悲伤的状态(不仅仅是关于v4l2)。图像看起来是这样的原因是它在尝试保持正确的分辨率时将传入的Y800解释为rgb。   这只能通过修补OpenCV或使用其他方法来获取图像来修复。

建议单色使用:

cv2.imdecode(frame, CV_LOAD_IMAGE_GRAYSCALE)

你可以尝试让我们知道它是否有效吗?