Пример #1
0
BOOL MyColorSpace::RgbtoHsv(BYTE* inDatas, int width, int height, MyHSV* outHSV)
//将位图图像数据转换为HSV数据;
{
	if (NULL == outHSV)
	{
		CString tempstr;
		tempstr.Format("传入内存未分配,在MyColorSpace::RGBtoHSV");
		AfxMessageBox(tempstr,NULL,MB_OK);
		return FALSE;		
	}

	int i,j;
	FLOAT r,g,b;
	unsigned long pos;

	for(i=0;i<height;i++)
	{
		for (j=0;j<width;j++)
		{
			pos = i*width+j;
			r = (FLOAT) ( (FLOAT)inDatas[3*pos+2] / 255. );
			g = (FLOAT) ( (FLOAT)inDatas[3*pos+1] / 255. );
			b = (FLOAT) ( (FLOAT)inDatas[3*pos] / 255. );
			FLOAT h, s, v;
			Rgb2Hsv(r, g, b, h, s, v);
			outHSV[pos].h = h;
			outHSV[pos].s = s;
			outHSV[pos].v = v;			
		}
	}
	return TRUE;
}
Пример #2
0
uint8_t SysColor2Hsv(fb_pixel_t color, HsvColor *hsv)
{
	uint8_t tr;
	RgbColor rgb;
	tr     = (uint8_t)((color & 0xFF000000) >> 24);
	rgb.r  = (uint8_t)((color & 0x00FF0000) >> 16);
	rgb.g  = (uint8_t)((color & 0x0000FF00) >>  8);
	rgb.b  = (uint8_t) (color & 0x000000FF);
	Rgb2Hsv(&rgb, hsv);
	return tr;
}