c++ - OpenCV 在没有 RGB 转换的情况下从相机捕获 YUYV

标签 c++ image opencv camera v4l2

我尝试使用 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/

相关文章:

c++ - 为我想存储在 <map> 中的类重载 "<"运算符

c++ - 在函数映射容器 : automatic deduction fails with compiler error 中重载 C++ 函数返回类型

objective-c - iPhone 4 和 5 的图像

android - 通过OpenCV 3.0 RC1在Android中创建BackgroundSubtractorMOG2

c++ - 通过重新排列字符查找字符串中的所有回文子串

c++ - const std::optional 的内容总是 const 吗?

c# - System.Drawing.Graphics Drawimage 将IOS拍摄的图片旋转90度

asp.net-mvc - Web 控制图像的任何在线资源?

python - 如何在Python中使用OpenCV在检测部分绘制矩形?

python - 当我尝试使用网络摄像头时出错(Python)