【问题标题】:OpenCV capture YUYV from camera without RGB conversionOpenCV从相机捕获YUYV,无需RGB转换
【发布时间】:2015-02-14 07:06:08
【问题描述】:

我尝试使用 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 格式。这将允许我将左右图像分开。

OR 我需要一种分别捕获左右图像的方法,但我认为这不太可能。

我认为这在 v4l 中是可能的,但我宁愿只在可能的情况下使用 openCV。

谢谢!

【问题讨论】:

  • 所以你想让它转换成黑白?
  • 或者你想直接把它读成灰度
  • 再转换回 yuv 不行吗?
  • 我尝试过转换回 YUV 并拆分通道,但效果不佳。从 Y 通道形成的图像主要是左图像,但仍然有这些从右图像遗留下来的幽灵形状(另一张图像反之亦然)。我有一些想法为什么会这样。首先,openCV 将图像转换为不同类型的 YUV。我不确切知道它是哪一个,但只有三个通道而不是四个。其次,YUYV->RGB转换是否会丢失一些信息或不可逆地混合亮度和色度信息?
  • 我刚刚尝试使用以下公式转换回 YUYV:Y = 0.299R+0.587G+0.114B。我只找到了每个像素的 Y 值,因为这足以仅查看左侧图像。然而,仍然有来自右侧摄像头的残留重影图像。要么我的转换错误,要么 YUYV->RGB 转换不可逆。我在这里得到了公式fourcc.org/fccyvrgb.php

标签: c++ image opencv camera v4l2


【解决方案1】:

我曾经在一个产生 YUV420 数据的相机上工作,但在配置它时遇到了一些问题。但是这个功能对我有用。

videoCapture.set(CV_CAP_PROP_CONVERT_RGB, 0)

您能否检查是否有任何其他配置导致问题。

【讨论】:

  • 问题中明确指出已经尝试过了。
  • 唯一受支持的属性是帧高、帧宽、fps 和增益。所有其他属性选项都会给出消息“设备不支持属性 (x)”。我想制造商并没有打扰包括这些功能
【解决方案2】:

我认为在 openCV 中没有办法做到这一点。最后用 V4L2 捕获帧并将它们存储在 openCV Mats 中并没有太麻烦。

【讨论】:

【解决方案3】:

在头文件中videoio.hpp

// Generic camera output modes.
// Currently, these are supported through the libv4l interface only.
enum { CAP_MODE_BGR  = 0, // BGR24 (default)
       CAP_MODE_RGB  = 1, // RGB24
       CAP_MODE_GRAY = 2, // Y8
       CAP_MODE_YUYV = 3  // YUYV
     };

用法:

cv::VideoCapture camera = cv::VideoCapture();
camera.open(0);
camera.set(CV_CAP_PROP_MODE, CV_CAP_MODE_YUYV);

【讨论】:

  • 我在带有网络摄像头的 Windows 上试用它会得到 yuy2data,但根本不工作......
猜你喜欢
  • 2022-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-13
  • 1970-01-01
  • 2018-11-30
  • 2018-01-04
相关资源
最近更新 更多