【问题标题】:How to show a YCbCr image using Emgu in C#?如何在 C# 中使用 Emgu 显示 YCbCr 图像?
【发布时间】:2014-02-20 16:27:27
【问题描述】:

我有一个位图作为来源;

我用Image<Bgr,Byte> img = new Image<Bgr,Byte>(bmp);创建了一个Emgu镜像

我使用 Image<Ycc,Byte> YCB = img.Convert<Ycc,Byte>(); 将其转换为 YCbCr 图像

我从工具箱中拖出一个图像框,并为它分配了 YCB -----> imagebox1.Image=YCB;

但结果以 RGB 格式显示图像,就像源位图一样

我不明白哪里出错了

谁能给我一些线索?

【问题讨论】:

    标签: c# emgucv


    【解决方案1】:

    你们对 YCB 做过什么改动吗?如果你只是简单地显示它,那么它看起来会和原来的一样。

    如果您在运行程序时右键单击图像框并选择属性,它将告诉您图像的类型并显示 YCB 图像中保存的数据,这应该与您的原始图像不同。或者,只显示图像矩阵的 1 个通道,以便 BGR 显示蓝色,这显然将显示为单色灰度图像。现在 YCB 再次显示 Luma 通道,这将显示为单色灰度图像。您会注意到它们之间的细微变化,因为 luma 代表所有 3 个色谱的亮度。

                CvInvoke.cvShowImage("Blue", img [0]);
                CvInvoke.cvShowImage("Luma", YCB[0]);
    

    如果您想看到更大的差异,请将 Luma 乘以 2,您将获得完全不同的图像。

                YCB[0] *= 2;
                CvInvoke.cvShowImage("Luma Change", YCB);
    

    CvInvoke.cvShowImage() 方法是调试代码并逐步查看代码对图像执行的操作的绝佳工具。

    为了他人的利益 Ycc 是 YCbCr 颜色空间:http://en.wikipedia.org/wiki/YCbCr

    干杯,

    克里斯

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-13
      • 1970-01-01
      • 1970-01-01
      • 2015-03-08
      • 1970-01-01
      • 2017-12-24
      • 2012-09-25
      • 1970-01-01
      相关资源
      最近更新 更多