在 MATLAB 中将 HSV 转换为 RGB
Convert HSV to RGB in MATLAB
我有 [H,S,V] 颜色值。
如何在 MATLAB 中将它们转换为 [R,G,B]?
我试过算法,但遇到了一些问题。谁能帮我处理代码?
使用内置的 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 始终使用的范围。
如果您有很多 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;
我有 [H,S,V] 颜色值。
如何在 MATLAB 中将它们转换为 [R,G,B]?
我试过算法,但遇到了一些问题。谁能帮我处理代码?
使用内置的 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 始终使用的范围。
如果您有很多 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;