我有计算hsv和yuv图像直方图的代码。当我试图单独获得与亮度对应的值时,我想要hsv图像中的"v"通道值和yuv图像中的亮度("y")通道值。这是我使用的代码。
int channels[] = {0};
calcHist(&src_yuv,1,channels,Mat(),hist,1,histSize,ranges,true,false);
这个示例代码是给你的。我只是将{0}更改为{2}以从HSV获得'v'通道值。我得到了一定的结果,但我不确定我是否选择了正确的渠道。你能帮我看看那些号码是否选择了我想要的频道吗?提前感谢
要绝对确定通道号X
对应于您所需要的通道,请参考IPL Image结构的channelSeq
属性。如果channelSeq[X]
给出了您正在寻找的通道的名称(一个字符),那么您就找到了它。
但是,考虑到如何记录这个属性(以及其他有趣的属性),即使您始终使用IPLImage
,也不能保证其中包含的信息是准确的。因此,要绝对确定图像中的通道序列,您必须信任转换规范并记住这一点。因此,如果您从BGR
中的图像开始,并使用BGR2YUV
进行转换,那么您相信Y
通道是第一个通道,依此类推。如果OpenCV曾经改变BGR2YUV
,意味着Y
进入最后一个通道,等等,那么对你来说太糟糕了。