您的位置:首页 > 编程语言 > MATLAB

matlab把rgb转为颜色名

2015-05-13 14:03 148 查看
获取颜色名的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 


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: