我尝试使用 openCV/c++ 从 LI-USB30_V024 立体相机捕获左右图像,而不自动将其转换为 RGB。相机以 YUYV 格式输出图像。
我尝试使用 videoCapture.set(CV_CAP_PROP_CONVERT_RGB, false) 但我收到消息“HIGHGUI ERROR: V4L: Property (16) not supported by device”。
我想避免转换为 RGB 的原因是因为相机将左右视频一起打包成一个 YUYV 图像。两台相机都是单色的,据我所知,左图像信息在 Y 通道中编码,而右图像信息在 U 和 V 通道中编码。例如,如果我运行 guvcview,我会得到一个包含叠加的左右图像的单个图像。它看起来像一张黑白图像(左侧图像在 Y 通道中编码),顶部是绿色和粉红色图像(右侧相机在 UV 通道中编码)。我知道这听起来很不寻常,所以如果您对此有任何其他想法/问题,请不要犹豫。
我的目标是将图像捕获为 YUYV,以便我可以使用 split() 将左图像(Y 通道)与右图像(U 和 V 通道)分开并将它们都显示为单色图像。然而,一旦图像被转换为 RGB,亮度和色度通道就会混合在一起,并且不可能将两个图像分开。
综上所述,我需要在不将其转换为 RGB 的情况下捕获视频,以便保留 YUYV 格式。这将允许我分开左右图像。
或者 我需要一种分别捕获左右图像的方法,但我认为这不太可能。
我认为这在 v4l 中是可能的,但如果可能的话,我宁愿只使用 openCV。
谢谢!
原文由 titch 发布,翻译遵循 CC BY-SA 4.0 许可协议
我认为在 openCV 中没有办法做到这一点。最后,用 V4L2 捕获帧并将它们存储在 openCV Mats 中并没有太大的麻烦。