OpenCV调整彩色图像的饱和度和亮度
问题
如何调整彩色图像的饱和度和亮度
解决思路
详细步骤:
- 将RGB图像值归一化到[0, 1]
- 然后使用函数cvtColor进行色彩空间的转换
- 接下来可以根据处理灰度图像对比度增强伽马变换或者线性变换调整饱和度和亮度分量
- 最后转换到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调整彩色图像的饱和度和亮度的更多相关文章
- UnityShader:HSV(色相,饱和度,亮度)转换
http://blog.csdn.net/costfine/article/details/46930473 发现其实美术调整颜色的时候大部分都是调整的HSV,因为可以方便的分别调整色相(hue).饱 ...
- 图像处理术语解释:灰度、色相、饱和度、亮度、明度、阿尔法通道、HSL、HSV、RGBA、ARGB和PRGBA以及Premultiplied Alpha(Alpha预乘)等基础概念详解
☞ ░ 前往老猿Python博文目录 ░ 一.引言 由于老猿以前没接触过图像处理,在阅读moviepy代码时,对类的有些处理方法代码看不懂是什么含义,为此花了4天时间查阅了大量资料,并加以自己的理解和 ...
- iOS有关图片处理的总结 (四)------图片的饱和度,亮度,对照度。
在做图片处理的时候.会遇到调节图片的饱和度的问题,这里就要用到Core Image这个框架,Core Image是一个非常强大的框架. 它能够让你简单地应用各种滤镜来处理图像,比方改动鲜艳程度, 色泽 ...
- hue, saturation, and brightness:色调、饱和度和亮度
色调.饱和度和亮度(hue, saturation, and brightness)以人对红.绿.蓝(RGB)三色组合的感觉为基础.在描述阴极射线管显示器参数时,经常提到这三个专有名词.所有的颜色可以 ...
- RGB颜色空间、色调、饱和度、亮度,HSV颜色空间详解
本文章会详细的介绍RGB颜色空间与RGB三色中色调.饱和度.亮度之间的关系,最后会介绍HSV颜色空间! RGB颜色空间 概述 RGB颜色空间以R(Red:红).G(Green:绿).B(Blue:蓝) ...
- opencv调整图像亮度对比度
图像处理 图像变换就是找到一个函数,把原始图像矩阵经过函数处理后,转换为目标图像矩阵. 可以分为两种方式,即像素级别的变换和区域级别的变换 Point operators (pixel transfo ...
- OpenCV(5) 对比度和亮度
公式: 两个参数 \alpha > 0 和 \beta 一般称作 增益 和 偏置 参数.我们往往用这两个参数来分别控制 对比度 和 亮度 . #include "stdafx. ...
- Kinect For Windows V2开发日志五:使用OpenCV显示彩色图像及红外图像
彩色图像 #include <iostream> #include <Kinect.h> #include <opencv2\highgui.hpp> using ...
- opencv学习笔记-图像对比度、亮度调节
在数学中我们学过线性理论,在图像亮度和对比度调节中同样适用,看下面这个公式: 在图像像素中其中: 参数f(x)表示源图像像素. 参数g(x) 表示输出图像像素. 参数a(需要满足a>0)被称为增 ...
随机推荐
- TMOUT优化终端超时
有时候,管理员终端登陆了系统,如果离开没有退出账户,则会有安全隐患存在,因此需要优化终端超时. 设置终端超时: export TMOUT=10 永久生效: echo "export TMOU ...
- touch创建文件
创建文件 在cs目录下创建1.txt和2.txt文件 touch ./文件名.txt 或者 touch /root/cs 文件名.txt 或者 echo > ./文件名.txt 或者 >. ...
- [Python_4] Python 面向对象(OOP)
0. 说明 Python 面向对象(OOP) 笔记.迭代磁盘文件.析构函数.内置方法.多重继承.异常处理 参考 Python面向对象 1. 面向对象 # -*-coding:utf-8-*- &quo ...
- 在 Virtual Box 中为 CentOS7 mini 配置双网卡
1. 配置过程 1.1 需求分析 要同时满足虚拟机访问互联网和远程连接,需要配置两块网卡. 一块为 NAT 网络,这块用来访问互联网. 另一块为 Host-Only 网络,进行远程连接. 1.2 ...
- 【转】Nginx学习---负载均衡的原理、分类、实现架构,以及使用场景
[原文]https://www.toutiao.com/i6593604356799463944/ [原文]https://www.toutiao.com/i6592741060194075143/ ...
- ELK 安装过程补充(不建议看,很少)
1.yum 安装ELK服务 参考文档:https://blog.csdn.net/tonghudan/article/details/81414387 rpm -Uvh https://dl.fedo ...
- 粗略的整改一下blog
一.先找个简约的模板:看个人喜好咯 二.页面定制CSS: 1.首先,查看主页源码,了解一下各个标签的id,引用的class等 2.通过操作相应的id,class,和标签,进行个性化.这里需要具备看懂和 ...
- PyQt5--QProgressBar
# -*- coding:utf-8 -*- ''' Created on Sep 20, 2018 @author: SaShuangYiBing Comment: ''' import sys f ...
- Netty入门(五)ChanneHandler
本节主要讨论了 Netty 的数据处理组件 ChannelHandler. 一.Channel 生命周期 Channel 有个简单但强大的状态模型,下面是 Channel 的四个状态: Channel ...
- kubernetes备份和恢复
kubernetes备份和恢复 备份etcd数据 首先由于ETCD有三个备份,并且会同步,所以您只需要在一台master机器上执行ETCD备份即可. 另外在运行下列命令前,确保当前机器的kube- ...