在calchist opencv中选择频道

时间:2013-01-10 19:56:03

标签: image-processing opencv computer-vision vision

我有用于计算hsv和yuv图像的直方图的代码。当我试图获得与亮度相对应的值时,我想要来自huv image的hsv image和luma('y')通道值的'v'通道值。这是我用过的代码。

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

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

1 个答案:

答案 0 :(得分:2)

要绝对确保频道号X与您所使用的频道相对应,请参阅IPL Image structurechannelSeq属性。如果channelSeq[X]给出您所追求的频道的名称(字符),那么您就找到了它。

但是,考虑到如何记录此属性(以及其他有趣的属性),即使您始终使用IPLImage,也无法保证其中包含的信息准确无误。因此,要完全确定图像中的通道序列,您必须信任转换规范并自己记住。因此,如果您从BGR中的图片开始并使用BGR2YUV转换,那么您相信Y频道是第一个,依此类推。如果OpenCV永远改变BGR2YUV意味着Y转到最后一个频道,依此类推,那么对你来说太糟糕了。