我尝试使用 openCV/c++ 从 LI-USB30_V024 立体相机捕获左右图像,而不自动将其转换为 RGB。相机输出YUYV格式的图像。
我尝试使用 videoCapture.set(CV_CAP_PROP_CONVERT_RGB, false) 但我收到消息“HIGHGUI 错误:V4L:设备不支持属性 (16)”。
我想避免转换为 RGB 的原因是因为相机将左右视频打包到单个 YUYV 图像中。两个相机都是单色的,据我所知,左侧图像信息在 Y channel 中编码,而右侧图像在 U 和 V channel 中编码。例如,如果我运行 guvcview,我会得到一个图像,其中包含叠加的左右图像。它看起来像一张黑白图像(左边的图像在 Y channel 中编码),上面有绿色和粉红色的图像(右边的相机在 UV channel 中编码)。我知道这听起来很不寻常,所以如果您对此有任何其他想法/问题,请不要犹豫。
我的目标是将图像捕获为 YUYV,以便我可以使用 split() 将左图像(Y channel )与右图像(U 和 V channel )分开并将它们显示为单色图像。然而,一旦图像被转换为 RGB,亮度和色度 channel 就会混合在一起,并且无法将两个图像分开。
总而言之,我需要在不将视频转换为 RGB 的情况下捕获视频,以便保留 YUYV 格式。这将使我能够将左右图像分开。
或者我需要一种分别捕捉左右图像的方法,但我认为这不太可能。
我认为这在 v4l 中是可能的,但我更愿意尽可能只使用 openCV。
谢谢!
最佳答案
我认为在 openCV 中没有办法做到这一点。最后,用 V4L2 捕获帧并将它们存储在 openCV Mats 中并不太麻烦。
关于c++ - OpenCV 在没有 RGB 转换的情况下从相机捕获 YUYV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27496698/