OpenCV调整彩色图像的饱和度和亮度

问题

如何调整彩色图像的饱和度和亮度

解决思路

详细步骤:

  1. 将RGB图像值归一化到[0, 1]
  2. 然后使用函数cvtColor进行色彩空间的转换
  3. 接下来可以根据处理灰度图像对比度增强伽马变换或者线性变换调整饱和度和亮度分量
  4. 最后转换到RGB色彩空间

代码

1# !/usr/bin/env python 2# -*-encoding: utf-8-*- 3# author:LiYanwei 4# version:0.1 5 6 7import numpy as np 8import cv2 9 10 11def main(): 12 # 加载图片 读取彩色图像 13 image = cv2.imread('./Files_image/img1.jpg', cv2.IMREAD_COLOR) 14 # print(image) 15 # cv2.imshow("image", image) 16 # 图像归一化,且转换为浮点型 17 fImg = image.astype(np.float32) 18 fImg = fImg / 255.0 19 # 颜色空间转换 BGR转为HLS 20 hlsImg = cv2.cvtColor(fImg, cv2.COLOR_BGR2HLS) 21 l = 100 22 s = 100 23 MAX_VALUE = 100 24 # 调节饱和度和亮度的窗口 25 cv2.namedWindow("l and s", cv2.WINDOW_AUTOSIZE) 26 def nothing(*arg): 27 pass 28 # 滑动块 29 cv2.createTrackbar("l", "l and s", l, MAX_VALUE, nothing) 30 cv2.createTrackbar("s", "l and s", s, MAX_VALUE, nothing) 31 # 调整饱和度和亮度后的效果 32 lsImg = np.zeros(image.shape, np.float32) 33 # 调整饱和度和亮度 34 while True: 35 # 复制 36 hlsCopy = np.copy(hlsImg) 37 # 得到 l 和 s 的值 38 l = cv2.getTrackbarPos('l', 'l and s') 39 s = cv2.getTrackbarPos('s', 'l and s') 40 # 1.调整亮度(线性变换) , 2.将hlsCopy[:, :, 1]和hlsCopy[:, :, 2]中大于1的全部截取 41 hlsCopy[:, :, 1] = (1.0 + l / float(MAX_VALUE)) * hlsCopy[:, :, 1] 42 hlsCopy[:, :, 1][hlsCopy[:, :, 1] > 1] = 1 43 # 饱和度 44 hlsCopy[:, :, 2] = (1.0 + s / float(MAX_VALUE)) * hlsCopy[:, :, 2] 45 hlsCopy[:, :, 2][hlsCopy[:, :, 2] > 1] = 1 46 # HLS2BGR 47 lsImg = cv2.cvtColor(hlsCopy, cv2.COLOR_HLS2BGR) 48 # 显示调整后的效果 49 cv2.imshow("l and s", lsImg) 50 51 ch = cv2.waitKey(5) 52 # 按 ESC 键退出 53 if ch == 27: 54 break 55 elif ch == ord('s'): 56 # 按 s 键保存并退出 57 # 保存结果 58 lsImg = lsImg * 255 59 lsImg = lsImg.astype(np.uint8) 60 cv2.imwrite("lsImg.jpg", lsImg) 61 break 62 63 # 关闭所有的窗口 64 cv2.destroyAllWindows() 65 66 67if __name__ == "__main__": 68 main()
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

OpenCV3计算机视觉+python(二)

不同色彩空间的转换当前,在计算机视觉中有三种常用的色彩空间:灰度、BGR以及HSV1.灰度色彩空间是通过去除彩色信息来将其转换为灰阶,灰度色彩空间对中间处理特别有效,比如人脸检测2.BGR,即蓝绿红色彩空间,每一个像素点都由一个三元组来表示3.HSV,H(Hue)是色调,S(Saturation)是饱和度,V(value)

Python OpenCV实例:图像直方图均衡化(数学公式简单实现)

coding:utf8'''直方图均衡化作用:通常用来增加图像局部对比度,尤其在图像的有用数据的对比度相当接近时,通过直方图均衡化,图像的亮度可以更好地在直方图上分布基本思想:把原始图像的直方图变换为均匀分布的形式,增加了像素灰度值的动态范围,从而增强图像的整

Mac端图像浏览、编辑工具:EdgeView 4 for Mac

EdgeView4是一款Mac电脑上的图像浏览和编辑软件。支持多种格式的图片文件,包括JPEG、PNG、GIF、BMP、TIFF等,并提供如缩放、裁剪、旋转、调整亮度、对比度等编辑功能...