【问题标题】:compare two components with their colors比较两个组件的颜色
【发布时间】:2011-10-04 23:21:50
【问题描述】:

我想比较填充颜色的组件是否相等 我执行以下算法,我对 rgb 进行平均如下

                double avg1 =(comp[0].Red+comp[0].Blue+comp[0].Green)/3;
                double avg2 =(comp[1].Red+comp[1].Blue+comp[1].Green)/3;

然后比较它们如下

                      double ratio  = avg1/avg2 ;
                      if(ratio > 0.8 && ratio < 1.2){} //then they are supposed to be equal

但这种方法根本不准确

搜索后我发现最好的方法是将图像转换为 HSL 空间并进行比较 但我不知道如何比较两种颜色?!! here

换句话说,将图像转换为 HSL 空间后,我该怎么办?!

请帮忙!!

修改问题以获得更多说明 我的意思是分量(点序列),所以在平均步骤中,实际上我重新访问了计算每个像素的 rgb 平均值之和的所有点,然后对点的总数进行平均

【问题讨论】:

  • 您到底想要进行什么样的比较? “足够近”?你的用例是什么?
  • 实际上我想知道两个组件是否具有相同的颜色?!然后将它们组合在一起等,,

标签: image-processing colors opencv rgb hsl


【解决方案1】:

转换为 HSL 并使用 H(色调)的差异对颜色进行分组。

【讨论】:

    【解决方案2】:

    因此,如果您的问题是“将图像转换为 HSL 空间后我该怎么办?!”然后是:

    1. 使用带有CV_RGB2HLS 标志的cvCvtColor() 将您加载的RGB 图像转换为HSL(HSL 图像自然应该是3 通道)
    2. 为 H、L、S 通道分别制作三张单通道图像(大小相同)
    3. cvSplit( hls, h, l, s, 0 ) 将 HSL 图像分成通道
    4. 现在 h_image 就像任何单通道灰度图像一样。因此,在提取组件后(通过对 RGB 图像进行阈值处理,有时色调通道图像看起来很奇怪:P)只需比较色调图像中与其坐标对应的颜色。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-07
      相关资源
      最近更新 更多