网站首页 > 技术文章 正文
图像饱和度是指图像色彩的纯洁性程度,也称为颜色的鲜艳程度,是“色彩三属性”之一。我们经常听到浅红色没有深红色颜色红,这种感受就是图像色彩属性的人类最直接感觉。饱和度取决于该色中含色成分和消色成分的比例,其中含色成分越大,那么饱和度就越大,同理,如果消色成分越大,必然饱和度越小。
颜色有RGB,HSV,HLS等多种色彩属性模式,本次主要比较几种不同方法的颜色饱和度调整效果。
原始图像:
方法1效果:
方法2效果:
方法3效果:
def hsv(cv2_img, S, L, V, MAX):
""" HSV 调整 """
cv2_img = cv2_img.astype(np.float32)
cv2_img = cv2_img / 255.0
HSV = cv2.cvtColor(cv2_img, cv2.COLOR_BGR2HSV)
HSV2 = np.copy(HSV)
HSV2[:, :, 1] = (1.0 + V / float(MAX)) * HSV2[:, :, 1] ## 明度
HSV2[:, :, 1][HSV2[:, :, 1] > 1] = 1
HSV2[:, :, 2] = (1.0 + S / float(MAX)) * HSV2[:, :, 2] ### 饱和度
HSV2[:, :, 2][HSV2[:, :, 2] > 1] = 1
adjImg = cv2.cvtColor(HSV2, cv2.COLOR_HSV2BGR)
adjImg = adjImg * 255.0
adjImg = adjImg.astype(np.uint8)
del cv2_img, HSV, HSV2
return adjImg
def hsl(cv2_img, S, L, V, MAX):
""" HSL 饱和度调整 """
cv2_img = cv2_img.astype(np.float32)
cv2_img = cv2_img / 255.0
HLS = cv2.cvtColor(cv2_img, cv2.COLOR_BGR2HLS)
HLS2 = np.copy(HLS)
HLS2[:, :, 1] = (1.0 + L / float(MAX)) * HLS2[:, :, 1] ## 明度
HLS2[:, :, 1][HLS2[:, :, 1] > 1] = 1
HLS2[:, :, 2] = (1.0 + S / float(MAX)) * HLS2[:, :, 2] ### 饱和度
HLS2[:, :, 2][HLS2[:, :, 2] > 1] = 1
adjImg = cv2.cvtColor(HLS2, cv2.COLOR_HLS2BGR)
adjImg = adjImg * 255.0
adjImg = adjImg.astype(np.uint8)
del cv2_img, HLS, HLS2
return adjImg
def saturationAdjust(cv2_img):
#### 图像颜色饱和度
cv2.namedWindow("SatuAdj", 0)
cv2.createTrackbar('S', 'SatuAdj', 10, 100, callback)
cv2.createTrackbar('V', 'SatuAdj', 10, 100, callback)
cv2.createTrackbar('L', 'SatuAdj', 10, 100, callback)
cv2.createTrackbar('I', 'SatuAdj', -100, 100, callback)
cv2.createTrackbar('Max', 'SatuAdj', 60, 360, callback)
####视图区域
input_img = cv2_img.copy()
while True:
S, V, L, I, MAX = callback(0)
hsv_img = hsv(input_img.copy(), S, L, V, MAX)
hsl_img = hsl(input_img.copy(), S, L, V, MAX)
rgb_img = rgb(input_img.copy(), I)
mat_img = np.hstack((input_img, hsv_img, hsl_img, rgb_img))
text = f"Max:{MAX},S:{S}, V:{V}, L:{L}"
cv2.putText(mat_img, text, (10, 40), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 0), 1)
cv2.imshow("SatuAdj", mat_img)
cv2.waitKey(1)
示例2:
调整结果来看,在RGB上效果较差,不稳定,HSL和HSV相当。
猜你喜欢
- 2024-09-30 OPENCV-python 第一天 python opencv教程
- 2024-09-30 Python帮您十步搞定人脸检测 人脸检测 python
- 2024-09-30 OpenCV学习笔记(一)之图像金字塔-上采样与降采样与DOG
- 2024-09-30 Ubuntu18.04LTS下OpenCV的配置 ubuntu opencv4
- 2024-09-30 计算机视觉之Opencv(1)——基本操作
- 2024-09-30 OpenCV系列教程_03 opencv官方教程
- 2024-09-30 CV之 HOG特征描述算子-行人检测 卜算子 黄州定慧院寓居作
- 2024-09-30 OpenCV SURF特征点检测和匹配 opencv特征提取方法
- 2024-09-30 Opencv从零开始 - [启蒙篇] - 读取、几何变换
- 2024-09-30 密码忘记了?没事,我早就用Python给你监听了
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)