opencv中RGB到HSV转换问题

我在用cvCvtColor(src,src,CV_BGR2HSV)转换的时候好像得到的结果不是我想要的

R25 G75 B50 转得H169 S75 V75
可是这个和实际手工计算的结果不一样,和Photoshop转换得到的值也不一样

输出如下
50 75 25
75 169 75
Press any key to continue
程序如下
#include <highgui.h>
#include <cv.h>
#include <iostream.h>

void showColorMatrix(IplImage *srcImg)
{
cout<<(int)CV_IMAGE_ELEM(srcImg,uchar,0,0)<<"\t"
<<(int)CV_IMAGE_ELEM(srcImg,uchar,0,1)<<"\t"
<<(int)CV_IMAGE_ELEM(srcImg,uchar,0,2)<<"\n";

}

void main()
{
IplImage *src=cvLoadImage("g.jpg",-1);
showColorMatrix(src);
cvCvtColor(src,src,CV_BGR2HSV);
showColorMatrix(src);
}

opencv中的H分量范围是 0~180, S分量是0~255, V分量是0~255
但是HSV颜色空间却规定的是,H范围0~360,S范围0~1,V范围0~1
所以你需要自己转换一下,H*2,V/255,S/255
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-04-15
检查一下cvLoadImage的方式和手册里面关于参数CV_BGR2HSV的说明。
相似回答