我有用于计算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'通道值。我得到了一定的结果,但我不确定是否选择了正确的渠道。你能帮助我,知道这些数字是否选择了我想要的确切频道吗?提前致谢
答案 0 :(得分:2)
要绝对确保频道号X
与您所使用的频道相对应,请参阅IPL Image structure的channelSeq
属性。如果channelSeq[X]
给出您所追求的频道的名称(字符),那么您就找到了它。
但是,考虑到如何记录此属性(以及其他有趣的属性),即使您始终使用IPLImage
,也无法保证其中包含的信息准确无误。因此,要完全确定图像中的通道序列,您必须信任转换规范并自己记住。因此,如果您从BGR
中的图片开始并使用BGR2YUV
转换,那么您相信Y
频道是第一个,依此类推。如果OpenCV永远改变BGR2YUV
意味着Y
转到最后一个频道,依此类推,那么对你来说太糟糕了。