在MATLAB中将HSV转换为RGB

时间:2017-08-15 09:53:54

标签: matlab rgb hsv

我有[H,S,V]颜色值 如何在MATLAB中将它们转换为[R,G,B]?

我已尝试使用该算法,但我遇到了一些问题。任何人都可以帮我代码吗?

1 个答案:

答案 0 :(得分:1)

使用内置hsv2rgb功能......

% Some colour in HSV, [Hue (0-360), Saturation (0-1), Value (0-1)]
myHSV = [217, 0.4, 0.72];
% hsv2rgb takes Hue value in range 0-1, so...
myHSV(1) = myHSV(1) / 360;
% Convert to RGB with values in range (0-1)
myRGBpct = hsv2rgb(myHSV);
% Convert to RGB with values in range (0-255)
myRGB255 = myRGBpct * 255;

将所有这些放在一起,我们可以简单地做到

myHSV = [217, 0.4, 0.72];
myRGB255 = hsv2rgb(myHSV ./ [360, 1, 1]) * 255; 
>> myRGB255 = [110.16, 138.31, 183.60]

使用Google's color picker对此进行测试,我们可以看到这是正确的解决方案。如果你想在MATLAB中进行任何其他RGB操作,那么将值保留在范围(0-1)中,因为这是MATLAB总是使用的。

blue

如果您有许多HSV值,请将它们存储在mx3矩阵中,其中包含H,S和V列。然后,您可以这样做:

myHSV = [217, 0.4, 0.72;
         250, 0.5, 0.2; 
         % ... more rows
        ];
myHSV(:,1) = myHSV(:,1) / 360;
myRGB255 = hsv2rgb(myHSV) * 255;