H通道取值范围 0-180。
S通道的取值范围是0-1;
V通道的取值范围是0-255;
#include "cv.h"
#include "highgui.h"
#include "cxcore.h"
int main( int argc, char** argv )
{
IplImage* img = cvLoadImage("c:\\1.jpg",CV_LOAD_IMAGE_COLOR);
IplImage* hsv = cvCreateImage(cvGetSize(img),8,3);
cvCvtColor(img,hsv,CV_BGR2HSV);
cvReleaseImage(&hsv);
cvReleaseImage( &img );
return 0;
}
加入:
for (int i = 0; i < hsv->height; i++)
{
for (int j = 0; j < hsv->width; j++)
{
double h = cvGet2D(hsv, i, j).val[0];
double s = cvGet2D(hsv, i, j).val[1];
double v = cvGet2D(hsv, i, j).val[2];
// if (v > 254)
// {
// printf("%f\n", v);
// }
// fprintf(fp, "%f,%f,%f\n", h, s, v);
}
}
可以得到,H(0-180)S(0-255)V(0-255);
如果调用cvCvtColor(img,hsv,CV_BGR2HSV)时,将img和hsv都转为32位浮点型图像,得到的是:
H(0-360)S(0-1)V(0-255)!
H的取值范围是0-180,原来H通道的取值范围是0-360的,但创建的图像是8位无符号的3通道图像,所以,OpenCV进行了压缩,就直接将H通道压缩到了0-180的范围。
S通道的取值范围是0-1;V通道的取值范围是0-255;这个说的是对的