我已經買了一個顏色傳感器,并能夠獲取到R、G、B的值(大小均為0~255),然后我做實驗的樣品都是紫紅色的,有深有淺,我已知它們關系為y=2x+1(其中x是指顏色強度,y是指樣品濃度)。然后我想通過這個顏色深淺得知我的樣品濃度,用C語言的方式實作。
現在我不會弄的是,我已經獲得了RGB值如(R=45,G=56,B=122),我應該如何利用這三個值,因為三個值無法帶入我的公式進行計算,所以想請教大家如何將RGB的值(三個)換成顏色強度(一個值)進行計算,是進行灰度轉換嗎,還是其它方式處理呢,求大神指點。
uj5u.com熱心網友回復:
單用紅色不行嗎?我想到的就只有灰度轉換了。
紫紅應該是紅中加藍吧,所以先用灰度試一下,不行的話,再調整幾個引數的比例。
uj5u.com熱心網友回復:
“換成顏色強度”RGBtoHSL ?
uj5u.com熱心網友回復:
BOOL RGB2HLS(BYTE red,BYTE green,BYTE blue,int &hue,double &saturation, double &lightness)
{
double mn,mx;
int major;
if(red < green)
{
mn=red;mx=green;major=Green;
}
else
{
mn=green;mx=red;major=Red;
}
//
if(blue < mn)
{
mn=blue;
}
else if (blue > mx)
{
mx=blue;major=Blue;
}
//
if(mn==mx)
{
lightness=mn/255;
saturation=0;
hue=240;// ?? 0;
}
else
{
lightness=(mn+mx)/510; // 2*255
if(lightness <= 0.5) saturation=(double)(mx-mn)/(double)(mn+mx);
else saturation=(double)(mx-mn)/(double)(510-mn-mx);
switch(major)
{
case Red:
hue=(int)((green-blue)*60/(mx-mn)+360);
break;
case Green:
hue=(int)((blue-red)*60/(mx-mn)+120);
break;
case Blue:
hue=(int)((red-green)*60/(mx-mn)+240);
break;
}
if(hue >= 360) hue -= 360;
}
if(mn==0 && mx==255) return TRUE;
else return FALSE;
}
uj5u.com熱心網友回復:
RGB 值 轉為 HLS 對比下 飽和度和亮度ColorRGBToHLS
http://baike.baidu.com/link?url=_XK4CXzBzEpKEE8eyBrgtcDnE2ZF0opsSyHMCIi4HkYh7eS_RlpiDTOstzHAkEjmycP0hSnZWYkRCEdlYJqPa_
uj5u.com熱心網友回復:
就是rgb轉換成一個表示顏色強度的色彩模式,完后用你的公式去算uj5u.com熱心網友回復:
(R+G+B) / ((R*R) + (G*G) + (B*B))^2轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/145242.html
標籤:圖形處理/算法
上一篇:關于MFC下按鈕打開其他工程
