经常用opencv下的cvCvtColor函数直接把图片颜色空间转换到了HSV下,今天自己写了一段代码进行转化,RGB转HSV的计算公式如下:
在这里把h规范化到位于 0 到 360°之间,s和v均规范化到0-1之间,和opencv的范围不同。
IplImage * src;
int * h;
float * s;
float * v;
int width = src->width;
int height = src->height;
//分配内存
h = new int[width * height];
s = new float[width * height];
v = new float[width * height];
//初始化
for (int i = 0;i < width * height;i++)
{
h[i] = 0;
s[i] = 0;
v[i] = 0;
}
int width = src->width;
int height = src->height;
int k1,k2,r,g,b;
int ss;
uchar * data = (uchar *)src->imageData;
for