获取颜色名的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 = '浅红灰色';
end
else
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
end
elseif(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 = '灰紫色';
end
end
end