matlab把rgb轉為顏色名

2021-07-02 13:21:45 字數 4490 閱讀 6383

獲取顏色名的m函式:

function cname = colorname(r,g,b)

hsv = rgb2hsv(r,g,b) ;

h = hsv(:,:,1);

s = hsv(:,:,2);

v = hsv(:,:,3);

sprintf('h:%.2f,s:%.2f,v:%.2f',h,s,v) 

if(v < 0.2  && s < 0.5)    

if(h >= 0.165 && h <= 0.54 && v > 0.15 )

cname = '黑綠色';

else

cname = '黑色';    

end 

elseif((v > 0.9 && s < 0.04) || (v > 0.95 && s < 0.1) || (v > 0.98 && s < 0.15))

cname = '白色';    

elseif ((v >= 0.3 && s < 0.18) || (v >= 0.15 && s < 0.1))

if(v > 0.7)

if(s > 0.15)

if(h <= 1/12 || h >= 11/12)

cname = '淺紅灰色';

elseif(h >= 1/12 && h <= 0.17)

cname = '淺黃灰色';

elseif(h >= 0.165  && h <= 0.54)

cname = '淺綠灰色';

elseif(h >= 5/12 && h <= 7/12)

cname = '淺藍灰色';            

elseif(h >= 0.72 &&  h <= 9/12)

cname = '淺藍紫灰色';

elseif(h >= 9/12 && h <= 11/12)

cname = '淺紅灰色'; 

endelse

cname = '淺灰色';

end 

elseif(v > 0.5)

cname = '灰色';

elseif(v > 0.4)

cname = '深灰色';        

else

cname = '黑灰色';

end  

else

if(h <= 1/12 || h >= 11/12)

if(h <= 1/12 && h >= 0.05)

if(s < 0.5)

if(v < 0.65)

cname ='褐色';

else

cname = '茶色';

end 

elseif(v > 0.8)

cname = '橙色';

else

cname = '褐色';

end 

elseif(h >= 11/12)

if(v < 0.6)

cname = '梅紅色';

elseif(s < 0.5)

if(v > 0.8)

cname = '玫瑰紅色';

else

cname = '粉紅色';

end 

else

cname = '紅色';

end 

elseif(h < 0.012)

if(s > 0.8 && v > 0.8)

cname = '紅色';

elseif(s < 0.3 && v < 0.6)

cname = '深褐色';

elseif(s < 0.3)

cname = '粉酒紅色';

elseif(v < 0.6)

cname = '深紅色';

else

cname = '酒紅色';

end 

else

if(v > 0.8)

cname = '橙紅色';

else

cname = '咖啡色';

end 

endelseif(h >= 1/12 && h <= 0.17)

if(h < 0.09 && s < 0.6)

cname = '黃膚色';

elseif(h < 0.12)

if(s > 0.7 && v > 0.7)

cname = '淺橙色';

else

cname = '土黃色';

end 

elseif(h < 0.15)

cname = '金色';                

elseif(s < 0.41 && v > 0.7)

cname = '淺黃色';

elseif(s < 0.85)

cname = '檸檬黃色';

elseif(v < 0.4)

cname = '橄欖色'; 

elseif(v < 0.6)

cname = '深黃色';

else

cname = '黃色';

end 

elseif(h >= 0.165  && h <= 0.53)       

if(h < 0.25)

cname = '橄欖綠色';  %又名酸橙色

elseif(h < 0.28)

cname = '黃綠色'; 

elseif(h < 0.35)

if(s < 0.6)

if(s < 0.4)

cname = '淺綠色';

else

cname = '薄荷綠色';

end 

elseif(v > 0.7)

cname = '鮮綠色';

elseif(v < 0.3)

cname = '深綠色';

else

cname = '綠色';

end 

elseif(h < 0.46)

cname = '海綠色';

elseif(v > 0.7)

if(v > 0.9)

if(s > 0.9)

cname = '青綠色';

else                    

cname = '淺青綠色';

end 

else                    

cname = '水綠色';

end 

else

cname = '青色'; 

end 

elseif(h >= 0.53 && h <= 7/12)

if(s > 0.7)    

if(v > 0.7)

cname = '天藍色';

else 

cname = '深青色';

end 

else

cname = '淡藍色';

end 

elseif(h >= 7/12 && h <= 0.72)                     

if(v < 0.55)

cname = '深藍色';

elseif(s > 0.85)

cname = '藍色';

elseif(s < 0.4 && v > 0.7)

cname = '粉藍色';

elseif(s < 0.9)

if(v > 0.8)

cname = '淺藍色';

elseif(s < 0.5)

cname = '灰藍色';

elseif(s < 0.6 && v > 0.6)

cname = '紫藍色';

else

cname = '靛藍色';

end 

else

cname = '藍色';                    

end 

elseif(h >= 0.72 &&  h <= 0.8)

if(v < 0.5)

cname = '深紫色';

elseif(v > 0.8)

cname = '淡紫色';

else

cname = '藍紫色';              

end 

elseif(h >= 0.8 && h <= 11/12)

if(s > 0.4)

if(v < 0.7)

if(s > 0.85)

cname = '紫羅蘭藍色';

else

cname = '梅紅色';

end 

else

cname = '粉紅色';

end 

else

cname = '灰紫色';

VB取各顏色分量,將RGB轉為HTML顏色

取各顏色分量 public function getredvalue color as long as integer 取得紅色值 getredvalue color and endfunction public function getgreenvalue color as long as int...

基於matlab的RGB到YCbCr顏色空間的轉換

在matlab中,影象處理工具箱會將彩色影象當做rgb影象或者索引影象來處理。除了這兩種顏色空間外還有其他一些以rgb模型為基礎的顏色空間,如常見的ycbcr hsv hsi顏色空間等。這裡只講影象從rgb到ycbcr顏色空間的轉換並對亮度分量y進行提取 rgb到ycbc顏色空間轉換的基本語句如下 ...

RGB表示顏色

rgb是表示顏色常用的一種方式 看完這篇文章你能就學會 科學地搞顏色 rgb的原理 首先上色圖 看懂了沒,沒看懂就對了 rgb的原理 as we all know,the rgb分別代表r red紅 g green綠 b blue藍 光的成色原理 其通用格式為 由 和6位代表rgb值的16進製制數組...