RGB转换HSV色彩空间(Python+MATLAB实现)

我们正式的来看一下这些代码原理的实现,这么多循迹的运用就是没有人写,真鸡儿过分。

闲话不多说,先放个转换色彩空间的代码来看看:

# 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: r, g, b = r / 255.0, g / 255.0, b / 255.0 # h, s, v = hue, saturation, value cmax = max(r, g, b) # maximum of r, g, b cmin = min(r, g, b) # minimum of r, g, b diff = cmax-cmin # diff of cmax and cmin. # if cmax and cmax are equal then h = 0 if cmax == cmin: h = 0 # if cmax equal r then compute h elif cmax == r: h = (60 * ((g - b) / diff) + 360) % 360 # if cmax equal g then compute h elif cmax == g: h = (60 * ((b - r) / diff) + 120) % 360 # if cmax equal b then compute h elif cmax == b: h = (60 * ((r - g) / diff) + 240) % 360 # if cmax equal zero if cmax == 0: s = 0 else: s = (diff / cmax) * 100 # compute v v = cmax * 100    return 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, g, b = r / 255.0, g / 255.0, b / 255.0 cmax = max(r, g, b) # maximum of r, g, b cmin = min(r, g, b) # minimum of r, g, b    diff = cmax-cmin   # diff of cmax and cmin. if cmax == cmin:        h = 0 elif cmax == r:        h = (60 * ((g - b) / diff) + 360) % 360 elif cmax == g:        h = (60 * ((b - r) / diff) + 120) % 360 elif cmax == b:        h = (60 * ((r - g) / diff) + 240) % 360 if cmax == 0: s = 0 else:        s = (diff / cmax) * 100 v = 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 =
1.0000 0 0 1.0000 0.5000 0 1.0000 1.0000 0 0 1.0000 0 0 0 1.0000 0.6667 0 1.0000
>> hsv = rgb2hsv(rgb)
hsv =
0 1.0000 1.0000 0.0833 1.0000 1.0000 0.1667 1.0000 1.0000 0.3333 1.0000 1.0000 0.6667 1.0000 1.0000 0.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

这些例子可以在计算机的这个位置找到

(0)

相关推荐

  • JavaScript实现HSL拾色器

    从 RGB 到 HSL 或 HSV 的转换 设 (r, g, b) 分别是一个颜色的红.绿和蓝坐标,它们的值是在 0 到 1 之间的实数.设 max 等价于 r, g 和 b 中的最大者.设 min ...

  • Python和Matlab有什么区别?一分钟看懂!

    俗话说得好:技多不压身!近几年,随着社会的发展,竞争越来越大,为了获得长久发展,很多人都开始转行学技术,这其中有人会选择学Python,当然也有人想要学Matlab,那么Python和Matlab哪个 ...

  • RGB 与YUV 转换矩阵的几何含义

    作者:苹果API搬运工 出处 :https://juejin.cn/post/6948613610549542919 说明 一般来说,手机摄像头直接获取到的视频数据,都是 YUV 格式的,而要在屏幕上 ...

  • PYTHON用时变马尔可夫区制转换(MRS)自回归模型分析经济时间序列

    原文链接:http://tecdat.cn/?p=22617 本文提供了一个在统计模型中使用马可夫转换模型模型的例子,来复现Kim和Nelson(1999)中提出的一些结果.它应用了Hamilton( ...

  • RGB 色彩空间

    单反相机里有色彩空间的设置,后期软件如 Ps 等中也有色彩空间的选择或指定.色彩空间的选择对于色彩的正确显示或打印输出非常重要. ◆  ◆  ◆ 什么是色彩空间 所以称之为"色彩空间&quo ...

  • Python批量转换HTML为PDF | Medivh's castle

    wkhtmltopdf 简介 wkhtmltopdf and wkhtmltoimage are open source (LGPLv3) command line tools to render H ...

  • matlab实现MCMC的马尔可夫转换ARMA - GARCH模型估计

    原文链接:http://tecdat.cn/?p=4241 _状态转换_模型,尤其是_马尔可夫转换_(MS)模型,被认为是识别时间序列非线性的不错的方法. 估计非线性时间序列的方法是将MS模型与自回归 ...

  • Python地理坐标系和投影坐标系转换

    0 相关名词 在开始之前,有必要了解一下相关名词: 地心地固坐标系(Earth-Centered, Earth-Fixed,ECEF),简称地心坐标系. 地理坐标系统(Geographic Coord ...

  • 我应该学习MATLAB还是Python?

    让小编告诉你-.您应该学习什么MATLAB或Python 通过解释,Python是一种编程语言.最基本的实现是in(也称为Python)中的实现,通常被称为" Python".除了 ...

  • 基于MATLAB&SIMULINK开发自动驾驶系统之传感器配置和坐标系转换

    1.1  自动驾驶工具箱中的坐标系统 自动驾驶工具箱使用这些坐标系: - 世界坐标系:一个固定的通用坐标系,所有的车辆及其传感器都被放置在这个坐标系中 - 车辆坐标系:锚定在被控车辆上.通常情况下,车 ...