HSV 即使用 色相(Hue)、饱和度(Saturation)、明度(Value) 来表示色彩的一种方式

色相:将颜色用0°到360°表示,就是我们日常讲的颜色名称,如红色、蓝色等。

色相与颜色对应关系如上

饱和度:色彩的纯度,饱和度越低色彩越暗淡(0<=S<1)

明度:即颜色的明亮程度,数值越高越接近于白色,数值越低越接近于黑色(0<=V<1)

将图像从RGB色彩空间转换到HSV色彩空间的算法如下所示:

Max = max(R,G,B)

Min = min(R,G,B)

色相

饱和度: S = Max - Min

明度:V = Max

从HSV转换到RGB空间:

HSV——>RGB


# 上 BGR2HSV 和 HSV2BGR 代码import cv2import numpy as np# BGR -> HSVdef BGR2HSV(_img):img = _img.copy() / 255.hsv = np.zeros_like(img, dtype=np.float32)# get max and minmax_v = np.max(img, axis=2).copy()min_v = np.min(img, axis=2).copy()min_arg = np.argmin(img, axis=2)# Hhsv[..., 0][np.where(max_v == min_v)]= 0## if min == Bind = np.where(min_arg == 0)hsv[..., 0][ind] = 60 * (img[..., 1][ind] - img[..., 2][ind]) / (max_v[ind] - min_v[ind]) + 60## if min == Rind = np.where(min_arg == 2)hsv[..., 0][ind] = 60 * (img[..., 0][ind] - img[..., 1][ind]) / (max_v[ind] - min_v[ind]) + 180## if min == Gind = np.where(min_arg == 1)hsv[..., 0][ind] = 60 * (img[..., 2][ind] - img[..., 0][ind]) / (max_v[ind] - min_v[ind]) + 300# Shsv[..., 1] = max_v.copy() - min_v.copy()# Vhsv[..., 2] = max_v.copy()return hsvdef HSV2BGR(_img, hsv):img = _img.copy() / 255.# get max and minmax_v = np.max(img, axis=2).copy()min_v = np.min(img, axis=2).copy()out = np.zeros_like(img)H = hsv[..., 0]S = hsv[..., 1]V = hsv[..., 2]C = SH_ = H / 60.X = C * (1 - np.abs( H_ % 2 - 1))Z = np.zeros_like(H)vals = [[Z,X,C], [Z,C,X], [X,C,Z], [C,X,Z], [C,Z,X], [X,Z,C]]for i in range(6):ind = np.where((i <= H_) & (H_ < (i+1)))out[..., 0][ind] = (V - C)[ind] + vals[i][0][ind]out[..., 1][ind] = (V - C)[ind] + vals[i][1][ind]out[..., 2][ind] = (V - C)[ind] + vals[i][2][ind]out[np.where(max_v == min_v)] = 0out = np.clip(out, 0, 1)out = (out * 255).astype(np.uint8)return out

利用上述函数实现图像色相翻转(色相值+180,然后用 RGB色彩空间表示图片)

# Read imageimg = cv2.imread("../paojie.jpg").astype(np.float32)# RGB > HSVhsv = BGR2HSV(img)# Transpose Huehsv[..., 0] = (hsv[..., 0] + 180) % 360# HSV > RGBout = HSV2BGR(img, hsv)# Save resultcv2.imwrite("out.jpg", out)cv2.imshow("result", out)cv2.waitKey(0)cv2.destroyAllWindows()

原图

色相翻转后结果


参考:https://www.cnblogs.com/wojianxin/p/12494305.html

参考:https://www.jianshu.com/p/9ff9d702ba9d

RGB图像转换成HSV图像,HSV图像转换为RGB图像相关推荐

  1. C语言运行时变成灰色,C语言实现RGB图像转换成灰(Gray)度图像

    以前实现RGB图像转换成灰度图像都是直接调用OpenCV的库函数RGB2GRAY(IplImage* src);最近老板让我们除了读入输出图像实时用OpenCV的函数,其余的最好都是自己写,所以我自己 ...

  2. 将.mat格式的高光谱图像转换成png或jpg格式

    将.mat格式的高光谱图像转换成png或jpg格式 使用MATLAB打开.mat文件,并读取高光谱图像数据. 如果高光谱图像数据为三维矩阵,将其转置为(宽度,高度,波段数)的形式.这是因为MATLAB ...

  3. R语言使用magick包的image_animate函数和image_morph函数创建一个由n个图像组成的序列,逐渐将一个图像转换成另一个图像(sequence of image morph by)

    R语言使用magick包的image_animate函数和image_morph函数创建一个由n个图像组成的序列,逐渐将一个图像转换成另一个图像(Creates a sequence of n ima ...

  4. html在线ocr文字识别源码,如何用OCR文字识别软件把图像转换成HTML

    之前给大家介绍了使用PDF转换成HTML文档首选ABBYY Mac),其实ABBYY FineReader无论Mac版还是Windows版都可以实现这一点,除此之外还可以将图像文件转换成HTML文档, ...

  5. 将有色液体图像转换成透明液体,CMU教机器人准确掌控向杯中倒多少水

    点击上方"迈微AI研习社",选择"星标★"公众号 重磅干货,第一时间送达 转载自:机器之心 后台回复"加群"进入-> CV 微信技术交 ...

  6. #今日论文推荐# 将有色液体图像转换成透明液体,CMU教机器人准确掌控向杯中倒多少水

    #今日论文推荐# 将有色液体图像转换成透明液体,CMU教机器人准确掌控向杯中倒多少水 借助不同风格之间的图像转换,CMU 的研究者教会了机器人理解透明液体. 如果机器人可以倒液体,则可以帮助我们自动完 ...

  7. Python 如何把图像转换成video (avi)格式?

    Python 如何把图像转换成video (avi)格式? import cv2 def image_to_video(image_dir, save_dir, size: tuple, fps=10 ...

  8. 如何用OCR文字识别软件把图像转换成HTML

    2019独角兽企业重金招聘Python工程师标准>>> 之前给大家介绍了使用OCR文字识别软件ABBYY FineReader Mac版将PDF转换成HTML文档(详见PDF转换成H ...

  9. Windows Forms:在C#中将图像转换成灰度图

    Windows Forms:在C#中将图像转换成灰度图 本文翻译自Windows Forms: Convert an image into grayscale in C# 这篇文章向你展示在C# Wi ...

  10. 一幅RGB彩色原图和其三个分量的显示,RGB图转换成HSI的显示

    数字图形处理实验记录 实验一 :一幅RGB彩色原图和其三个分量的显示,RGB图转换成HSI的显示 转换原理:采用圆锥模型公式 测试步骤: Matlab转化函数: function HSI = RGB2 ...

最新文章

  1. Valve className=org.apache.catalina.valves.AccessLogValve directory=logs prefix=localhost_acce
  2. Java中string字符串的值_Java中的字符串(String)
  3. clone是深拷贝还是浅拷贝_go-clone:深拷贝 Go 数据结构
  4. SwiftUI之深入解析如何实现3D Scroll效果
  5. 关于jstl在tomcat5和tomcat6的部署
  6. 测试龙芯 LoongArch .NET之 使用 FastTunnel 做内网穿透远程计算机
  7. Scala 学习之面向对象(3)
  8. python运行界面黑色_在Python中使用open执行轮廓检测后,如何使图像的背景变黑?...
  9. BZOJ 4516 后缀数组+ST+set
  10. 第十三次CCFCSP认证(2018年3月)真题碰撞的小球
  11. Qt网络编程-简易版TcpClient入门Demo(1)
  12. su必备插件_21款SU常用插件集合
  13. 手把手教你修改butterfly主题的样式
  14. Web3 来临前的准备工作
  15. Xbox one VS. ps4
  16. Centos7授权普通用户管理员权限
  17. 黑客利用2012伦敦奥运诈骗个人资料
  18. 怎么使用ping命令进行连通性测试
  19. 抖音快手B站等平台视频检测机制和规避方法
  20. 2022-11-08 Python基础知识 2

热门文章

  1. 免费沙箱软件模拟支付_支付(支付宝沙箱环境配置、测试支付Demo)
  2. 微信小程序--动画animation
  3. Mysql 5.7 卸载、重新解压安装
  4. wp8 小鬼电子书 应用
  5. 线性数据结构之队列(Queue)
  6. Linux命令ls -a、ls -l具体含义
  7. oracle 排序:order by
  8. Form表单, 4种常见的表单提交方式
  9. C# 线程安全集合类
  10. 安卓集成微信登录 无法调取微信页面的问题