RGB图像转换成HSV图像,HSV图像转换为RGB图像
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图像相关推荐
- C语言运行时变成灰色,C语言实现RGB图像转换成灰(Gray)度图像
以前实现RGB图像转换成灰度图像都是直接调用OpenCV的库函数RGB2GRAY(IplImage* src);最近老板让我们除了读入输出图像实时用OpenCV的函数,其余的最好都是自己写,所以我自己 ...
- 将.mat格式的高光谱图像转换成png或jpg格式
将.mat格式的高光谱图像转换成png或jpg格式 使用MATLAB打开.mat文件,并读取高光谱图像数据. 如果高光谱图像数据为三维矩阵,将其转置为(宽度,高度,波段数)的形式.这是因为MATLAB ...
- 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 ...
- html在线ocr文字识别源码,如何用OCR文字识别软件把图像转换成HTML
之前给大家介绍了使用PDF转换成HTML文档首选ABBYY Mac),其实ABBYY FineReader无论Mac版还是Windows版都可以实现这一点,除此之外还可以将图像文件转换成HTML文档, ...
- 将有色液体图像转换成透明液体,CMU教机器人准确掌控向杯中倒多少水
点击上方"迈微AI研习社",选择"星标★"公众号 重磅干货,第一时间送达 转载自:机器之心 后台回复"加群"进入-> CV 微信技术交 ...
- #今日论文推荐# 将有色液体图像转换成透明液体,CMU教机器人准确掌控向杯中倒多少水
#今日论文推荐# 将有色液体图像转换成透明液体,CMU教机器人准确掌控向杯中倒多少水 借助不同风格之间的图像转换,CMU 的研究者教会了机器人理解透明液体. 如果机器人可以倒液体,则可以帮助我们自动完 ...
- Python 如何把图像转换成video (avi)格式?
Python 如何把图像转换成video (avi)格式? import cv2 def image_to_video(image_dir, save_dir, size: tuple, fps=10 ...
- 如何用OCR文字识别软件把图像转换成HTML
2019独角兽企业重金招聘Python工程师标准>>> 之前给大家介绍了使用OCR文字识别软件ABBYY FineReader Mac版将PDF转换成HTML文档(详见PDF转换成H ...
- Windows Forms:在C#中将图像转换成灰度图
Windows Forms:在C#中将图像转换成灰度图 本文翻译自Windows Forms: Convert an image into grayscale in C# 这篇文章向你展示在C# Wi ...
- 一幅RGB彩色原图和其三个分量的显示,RGB图转换成HSI的显示
数字图形处理实验记录 实验一 :一幅RGB彩色原图和其三个分量的显示,RGB图转换成HSI的显示 转换原理:采用圆锥模型公式 测试步骤: Matlab转化函数: function HSI = RGB2 ...
最新文章
- Valve className=org.apache.catalina.valves.AccessLogValve directory=logs prefix=localhost_acce
- Java中string字符串的值_Java中的字符串(String)
- clone是深拷贝还是浅拷贝_go-clone:深拷贝 Go 数据结构
- SwiftUI之深入解析如何实现3D Scroll效果
- 关于jstl在tomcat5和tomcat6的部署
- 测试龙芯 LoongArch .NET之 使用 FastTunnel 做内网穿透远程计算机
- Scala 学习之面向对象(3)
- python运行界面黑色_在Python中使用open执行轮廓检测后,如何使图像的背景变黑?...
- BZOJ 4516 后缀数组+ST+set
- 第十三次CCFCSP认证(2018年3月)真题碰撞的小球
- Qt网络编程-简易版TcpClient入门Demo(1)
- su必备插件_21款SU常用插件集合
- 手把手教你修改butterfly主题的样式
- Web3 来临前的准备工作
- Xbox one VS. ps4
- Centos7授权普通用户管理员权限
- 黑客利用2012伦敦奥运诈骗个人资料
- 怎么使用ping命令进行连通性测试
- 抖音快手B站等平台视频检测机制和规避方法
- 2022-11-08 Python基础知识 2