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

Stella981
• 阅读 1194

问题

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

解决思路

详细步骤:

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

代码

# !/usr/bin/env python
# -*-encoding: utf-8-*-
# author:LiYanwei
# version:0.1


import numpy as np
import cv2


def main():
    # 加载图片 读取彩色图像
    image = cv2.imread('./Files_image/img1.jpg', cv2.IMREAD_COLOR)
    # print(image)
    # cv2.imshow("image", image)
    # 图像归一化,且转换为浮点型
    fImg = image.astype(np.float32)
    fImg = fImg / 255.0
    # 颜色空间转换 BGR转为HLS
    hlsImg = cv2.cvtColor(fImg, cv2.COLOR_BGR2HLS)
    l = 100
    s = 100
    MAX_VALUE = 100
    # 调节饱和度和亮度的窗口
    cv2.namedWindow("l and s", cv2.WINDOW_AUTOSIZE)
    def nothing(*arg):
        pass
    # 滑动块
    cv2.createTrackbar("l", "l and s", l, MAX_VALUE, nothing)
    cv2.createTrackbar("s", "l and s", s, MAX_VALUE, nothing)
    # 调整饱和度和亮度后的效果
    lsImg = np.zeros(image.shape, np.float32)
    # 调整饱和度和亮度
    while True:
        # 复制
        hlsCopy = np.copy(hlsImg)
        # 得到 l 和 s 的值
        l = cv2.getTrackbarPos('l', 'l and s')
        s = cv2.getTrackbarPos('s', 'l and s')
        # 1.调整亮度(线性变换) , 2.将hlsCopy[:, :, 1]和hlsCopy[:, :, 2]中大于1的全部截取
        hlsCopy[:, :, 1] = (1.0 + l / float(MAX_VALUE)) * hlsCopy[:, :, 1]
        hlsCopy[:, :, 1][hlsCopy[:, :, 1] > 1] = 1
        # 饱和度
        hlsCopy[:, :, 2] = (1.0 + s / float(MAX_VALUE)) * hlsCopy[:, :, 2]
        hlsCopy[:, :, 2][hlsCopy[:, :, 2] > 1] = 1
        # HLS2BGR
        lsImg = cv2.cvtColor(hlsCopy, cv2.COLOR_HLS2BGR)
        # 显示调整后的效果
        cv2.imshow("l and s", lsImg)

        ch = cv2.waitKey(5)
        # 按 ESC 键退出
        if ch == 27:
            break
        elif ch == ord('s'):
            # 按 s 键保存并退出
            # 保存结果
            lsImg = lsImg * 255
            lsImg = lsImg.astype(np.uint8)
            cv2.imwrite("lsImg.jpg", lsImg)
            break

    # 关闭所有的窗口
    cv2.destroyAllWindows()


if __name__ == "__main__":
    main()
点赞
收藏
评论区
推荐文章
blmius blmius
3年前
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
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Stella981 Stella981
3年前
OpenCV3计算机视觉+python(二)
不同色彩空间的转换当前,在计算机视觉中有三种常用的色彩空间:灰度、BGR以及HSV1.灰度色彩空间是通过去除彩色信息来将其转换为灰阶,灰度色彩空间对中间处理特别有效,比如人脸检测2.BGR,即蓝绿红色彩空间,每一个像素点都由一个三元组来表示3.HSV,H(Hue)是色调,S(Saturation)是饱和度,V(value)
Stella981 Stella981
3年前
Python OpenCV实例:图像直方图均衡化(数学公式简单实现)
coding:utf8'''直方图均衡化作用:通常用来增加图像局部对比度,尤其在图像的有用数据的对比度相当接近时,通过直方图均衡化,图像的亮度可以更好地在直方图上分布基本思想:把原始图像的直方图变换为均匀分布的形式,增加了像素灰度值的动态范围,从而增强图像的整
流浪剑客 流浪剑客
1年前
Macos 专业的raw图像处理工具:DxO PhotoLab 7 for Mac中文版
是一款功能强大的照片编辑软件,它可以帮助用户在创作的每一步实现精准把控。软件具有以下特点:全新的超广色域色彩空间,使用户享受更准确、更生动的照片。它远超AdobeRGB,使用光谱原色打造自然、明艳的效果,特别是在高饱和度图像中。用户可以在增强色彩的同时避免
子桓 子桓
1年前
mac电脑屏幕优化软件:BetterDisplay Pro for mac
BetterDisplayPro是一款为Mac电脑设计的屏幕亮度调节软件,旨在提高显示器的色彩和亮度表现。它可以根据用户的需求和显示器的特性,自动调整显示器的亮度、色温、对比度等参数,以获得更加真实、舒适的视觉效果。这款软件拥有智能调节功能,能根据环境光线
燕青 燕青
1年前
Mac虚拟显示器校准工具:BetterDisplay Pro for Mac
是一款适用于Mac的显示器校准和色彩管理软件。它可以帮助用户准确调整显示器的色彩、亮度和对比度等参数,以确保最佳的显示效果。BetterDisplayPro提供了直观的用户界面,让用户能够轻松地调整显示器的各种参数。它支持多种显示器类型和品牌,包括常见的L
公孙晃 公孙晃
1年前
Mac端图像浏览、编辑工具:EdgeView 4 for Mac
EdgeView4是一款Mac电脑上的图像浏览和编辑软件。支持多种格式的图片文件,包括JPEG、PNG、GIF、BMP、TIFF等,并提供如缩放、裁剪、旋转、调整亮度、对比度等编辑功能...
公孙晃 公孙晃
1年前
Macos显示器校准工具:BetterDisplay Pro for Mac 支持M1
是一款Mac电脑上的高级屏幕调整工具,它可以帮助用户优化和调整Mac电脑的屏幕显示效果,提高用户的使用体验。BetterDisplayPro的主要特点如下:多种屏幕调整选项:BetterDisplayPro提供了多种屏幕调整选项,包括亮度、对比度、色彩、饱
流浪剑客 流浪剑客
1年前
Camera Raw 15 for mac v15.5中文版
是Adobe公司开发的一款用于处理RAW格式图像的插件软件。它可以在Photoshop、Lightroom等软件中对RAW格式图像进行调整和优化。CameraRaw15提供了丰富的调整工具,包括白平衡、曝光、色彩、锐化、噪点、透视等,可以帮助用户更加精细地