我们正式的来看一下这些代码原理的实现,这么多循迹的运用就是没有人写,真鸡儿过分。
闲话不多说,先放个转换色彩空间的代码来看看:
# Python3 program change RGB Color# Model to HSV Color Modeldef rgb_to_hsv(r, g, b):# R, G, B values are divided by 255# to change the range from 0..255 to 0..1:g, b = r / 255.0, g / 255.0, b / 255.0# h, s, v = hue, saturation, valuecmax = max(r, g, b) # maximum of r, g, bcmin = min(r, g, b) # minimum of r, g, bdiff = cmax-cmin # diff of cmax and cmin.# if cmax and cmax are equal then h = 0if cmax == cmin:h = 0# if cmax equal r then compute helif cmax == r:h = (60 * ((g - b) / diff) + 360) % 360# if cmax equal g then compute helif cmax == g:h = (60 * ((b - r) / diff) + 120) % 360# if cmax equal b then compute helif cmax == b:h = (60 * ((r - g) / diff) + 240) % 360# if cmax equal zeroif cmax == 0:s = 0else:s = (diff / cmax) * 100# compute vv = cmax * 100return h, s, vprint(rgb_to_hsv(0, 51, 238))
作用是RGB空间转到HSV的空间
一开始的计算过程很简单
#R、G、B值除以255
#更改范围从0.255到0.1。有点像归一化的意思,当然也可以写一下关于归一化的通式是什么样子的:
n-min-----max-min
中间的横杠是除号,假装是除号。。。
设 (r, g, b) 分别是一个颜色的红、绿和蓝坐标,它们的值是在 0 到 1 之间的实数
设 max 等于 r, g, b 中的最大者
设 min 等于 r, g, b 中的最小者

转换公式

也可以看这个,都是一样的
= r / 255.0, g / 255.0, b / 255.0cmax = max(r, g, b) # maximum of r, g, bcmin = min(r, g, b) # minimum of r, g, b= cmax-cmin # diff of cmax and cmin.if cmax == cmin:= 0elif cmax == r:= (60 * ((g - b) / diff) + 360) % 360elif cmax == g:= (60 * ((b - r) / diff) + 120) % 360elif cmax == b:= (60 * ((r - g) / diff) + 240) % 360if cmax == 0:s = 0else:= (diff / cmax) * 100v = cmax * 100
具体的转换公式就是这样
https://ww2.mathworks.cn/help/matlab/ref/rgb2hsv.html对于一个理科狗来说,MATLAB嘤嘤嘤
HSV = rgb2hsv(RGB)hsvmap = rgb2hsv(rgbmap)
这个是语法
具体用法是:
示
HSV = rgb2hsv(RGB) | 将 RGB 图像的红色、绿色和蓝色值转换为 HSV 图像的色调、饱和度和明度 (HSV) 值。 |
hsvmap = rgb2hsv(rgbmap) | 将 RGB 颜色图转换为 HSV 颜色图。 |

启动!
rgb = prism(6)rgb =0 00.5000 01.0000 00 1.0000 00 0 1.00000 1.0000
>> hsv = rgb2hsv(rgb)hsv =0 1.0000 1.00000.0833 1.0000 1.00000.1667 1.0000 1.00000.3333 1.0000 1.00000.6667 1.0000 1.00000.7778 1.0000 1.0000
先直接转换一下看看结果
再转回去也得说一下,不想敲代码的可以,可以在MATLAB里面输入以下的一串东西:
openExample('graphics/Hsv2RgbColormapExample')hsv = [.6 1 1; .6 .7 1; .6 .5 1; .6 .3 1; .6 0 1];rgb = hsv2rgb(hsv);surf(peaks);colormap(rgb);colorbar

C:\Users\CY-306\Documents\MATLAB\Examples\graphics
这些例子可以在计算机的这个位置找到