问题

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

解决思路

详细步骤:

  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()

OpenCV调整彩色图像的饱和度和亮度的更多相关文章

  1. UnityShader:HSV(色相,饱和度,亮度)转换

    http://blog.csdn.net/costfine/article/details/46930473 发现其实美术调整颜色的时候大部分都是调整的HSV,因为可以方便的分别调整色相(hue).饱 ...

  2. 图像处理术语解释:灰度、色相、饱和度、亮度、明度、阿尔法通道、HSL、HSV、RGBA、ARGB和PRGBA以及Premultiplied Alpha(Alpha预乘)等基础概念详解

    ☞ ░ 前往老猿Python博文目录 ░ 一.引言 由于老猿以前没接触过图像处理,在阅读moviepy代码时,对类的有些处理方法代码看不懂是什么含义,为此花了4天时间查阅了大量资料,并加以自己的理解和 ...

  3. iOS有关图片处理的总结 (四)------图片的饱和度,亮度,对照度。

    在做图片处理的时候.会遇到调节图片的饱和度的问题,这里就要用到Core Image这个框架,Core Image是一个非常强大的框架. 它能够让你简单地应用各种滤镜来处理图像,比方改动鲜艳程度, 色泽 ...

  4. hue, saturation, and brightness:色调、饱和度和亮度

    色调.饱和度和亮度(hue, saturation, and brightness)以人对红.绿.蓝(RGB)三色组合的感觉为基础.在描述阴极射线管显示器参数时,经常提到这三个专有名词.所有的颜色可以 ...

  5. RGB颜色空间、色调、饱和度、亮度,HSV颜色空间详解

    本文章会详细的介绍RGB颜色空间与RGB三色中色调.饱和度.亮度之间的关系,最后会介绍HSV颜色空间! RGB颜色空间 概述 RGB颜色空间以R(Red:红).G(Green:绿).B(Blue:蓝) ...

  6. opencv调整图像亮度对比度

    图像处理 图像变换就是找到一个函数,把原始图像矩阵经过函数处理后,转换为目标图像矩阵. 可以分为两种方式,即像素级别的变换和区域级别的变换 Point operators (pixel transfo ...

  7. OpenCV(5) 对比度和亮度

      公式: 两个参数 \alpha > 0 和 \beta 一般称作 增益 和 偏置 参数.我们往往用这两个参数来分别控制 对比度 和 亮度 .   #include "stdafx. ...

  8. Kinect For Windows V2开发日志五:使用OpenCV显示彩色图像及红外图像

    彩色图像 #include <iostream> #include <Kinect.h> #include <opencv2\highgui.hpp> using ...

  9. opencv学习笔记-图像对比度、亮度调节

    在数学中我们学过线性理论,在图像亮度和对比度调节中同样适用,看下面这个公式: 在图像像素中其中: 参数f(x)表示源图像像素. 参数g(x) 表示输出图像像素. 参数a(需要满足a>0)被称为增 ...

随机推荐

  1. 【转】Java学习---内存泄露与溢出的区别

    Java内存泄露与溢出的区别 Java内存泄漏就是没有及时清理内存垃圾,导致系统无法再给你提供内存资源(内存资源耗尽): 而Java内存溢出就是你要求分配的内存超出了系统能给你的,系统不能满足需求,于 ...

  2. 进程控制编程——Linux编程

    1.进程的创建 编写一段程序,使用系统调用fork( )创建两个子进程,在系统中有一个父进程和两个子进程活动.让每个进程在屏幕上显示一个字符:父进程显示字符“a”,子进程分别显示字符“b” 和“c”. ...

  3. SQL server权限管理和备份实例

    权限设置: 1.创建用户zhangsan,并赋予zhangsan有dbcreator的服务器权限. 2.使用zhangsan登录,测试能否创建数据库. 3.使用sa用户附加myschool数据库,设置 ...

  4. T4学习- 3、创建运行时模板

    使用 Visual Studio 预处理过的文本模板,可以在运行时在应用程序中生成文本字符串. 执行应用程序的计算机不必具有 Visual Studio. 预处理过的模板有时称为"运行时文本 ...

  5. Java BAT大型公司面试必考技能视频-1.HashMap源码分析与实现

    视频通过以下四个方面介绍了HASHMAP的内容 一. 什么是HashMap Hash散列将一个任意的长度通过某种算法(Hash函数算法)转换成一个固定的值. MAP:地图 x,y 存储 总结:通过HA ...

  6. Python接口自动化--Json数据处理 5

    1.Json模块简介,全名JavaScript Object Notation,轻量级的数据交换格式,常用于http请求中. Encoding basic Python object hierarch ...

  7. python第三十六课——1.可迭代对象

    1.可迭代对象: 满足前提: 只要能被循环操作的对象,就可以可迭代对象 举例: str.list.tuple.set.dict.range.generator... 高效的检测一个对象是否是可迭代对象 ...

  8. cenos6.5 python2.6.6升级至python2.7.3

    踩坑无数... 一.参照以下两篇博文把python升级至python2.7.3 https://www.cnblogs.com/senzhe/p/6322214.html http://www.jb5 ...

  9. JS播放声音

    <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>JS播放声音</tit ...

  10. Pyspider抓取静态页面

    近期,我想爬一批新闻资讯的内容.新闻类型的网址很多,我想看看有没有一个网页上能包罗尽可能多的新闻网站呢,于是就发现了下面这个网页 http://news.hao123.com/wangzhi 这个页面 ...