【问题标题】:Opencv storing Yuyv (YCrCb) in cv::MatOpencv 在 cv::Mat 中存储 Yuyv (YCrCb)
【发布时间】:2013-07-01 12:10:31
【问题描述】:

我从网络摄像头获取的数据是 yuv422。我想将此 yuv422 存储到 cv::Mat 中而不将其转换为 RGB...这可能吗?

谢谢。

【问题讨论】:

  • 如果您可以直接访问框架,您可以使用 *data 成员扭曲 Mat 中的数据。 cv::Mat 是泛型类型,不是严格意义上的 RGB。

标签: c++ opencv colors mat


【解决方案1】:

考虑到色度二次采样,如果您将YUYV 数据解压缩到YUV 矩阵(3 个通道的 8 位数据)中,然后使用cv::inRange 等执行过滤,它可能会更简单。您只需需要为每个 Y 插值 U 和 V 样本。

另一种选择是将矩阵视为 8 位数据的 4 个通道,然后在您的过滤器结果中,合并来自两个 Y 样本通道的结果。

【讨论】:

    【解决方案2】:

    是的,只需创建一个 3 通道矩阵。请看basic Mat tutorial

    【讨论】:

    • 基本上,我想做的是在 yuv422 数据上使用cv::inRange;但是,由于数据是 422,我不太确定如何做到这一点。此外,我不认为我想要 3 通道而是两个通道,因为数据存储为 Y0U Y1V。
    • 然后创建一个双通道垫。关于如何使用 Mat 对象的文档非常好。
    • 是的,我做到了...但是我不能真正使用 cv::inRange 函数,因为每个奇数 nybble 代表 UV,每个偶数 nybble 代表 Y。你知道是否有办法存储图像以便我可以使用opencv函数(例如cv::inRange)?我想知道是否有某种方法可以告诉opencv数据是yuv422,因为如果它不知道,所有方法都不起作用。
    猜你喜欢
    • 2017-03-23
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-26
    相关资源
    最近更新 更多