3

我有计算 hsv 和 yuv 图像直方图的代码。当我试图获得仅对应于亮度的值时,我想要来自 hsv 图像的“v”通道值和来自 yuv 图像的亮度(“y”)通道值。这是我使用的代码。

    int channels[] = {0};
    calcHist(&src_yuv,1,channels,Mat(),hist,1,histSize,ranges,true,false);

此示例代码适用于 yuv。我只是将 {0} 更改为 {2} 以从 HSV 获取“v”通道值。我得到了某些结果,但不确定是否选择了正确的渠道。你能帮我看看这些数字是否选择了我想要的确切频道吗?提前致谢

4

1 回答 1

2

要绝对确定频道号X与您所追求的频道相对应,请查阅IPL 图像结构channelSeq的属性。如果给出你所追求的频道的名称(一个字符),那么你找到了它。channelSeq[X]

但是,鉴于此属性的记录方式(以及其他有趣的属性),即使您一直使用IPLImage,也不能保证其中包含的信息是准确的。因此,要绝对确定图像中的通道序列,您必须信任转换规范并自己记住这一点。因此,如果您从 in 中的图像开始BGR并使用 进行转换BGR2YUV,那么您相信Y通道是第一个,依此类推。如果 OpenCV 曾经更改BGR2YUV为意味着Y进入最后一个频道,依此类推,那么对你来说太糟糕了。

于 2013-01-10T20:42:38.607 回答