opencv调节图片饱和度_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()

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

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

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 #include #include using ...

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

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

转载:Opencv调整运行窗口图片的大小

本文来自:http://blog.csdn.net/cumtml/article/details/52807961 Opencv在运算时显示图片问题 总结在opencv中,图片显示的问题.简要解决图片 ...

随机推荐

java spring mvc完整包下载地址

推荐使用该地址:http://maven.springframework.org/release/org/springframework/spring/ 更多详细参考地址:http://blog.cs ...

Linux面试题汇总答案

转自:小女生的Linux技术~~~Linux面试题汇总答案~~ 一.填空题:1. 在Linux系统中,以 文件 方式访问设备 .2. Linux内核引导时,从文件 /etc/fstab 中读取要加载的 ...

Unity3D Optimizing Graphics Performance for iOS

原地址:http://blog.sina.com.cn/s/blog_72b936d801013ptr.html icense Comparisons http://unity3d.com/unity ...

Codeforces Round #360 (Div. 2) C D E

每次AB秒出 到了C难度陡然上升...翻译都弄不懂... C 给出一张图 找出两个点的覆盖集(覆盖集是指这图中每条边都有至少一个点在这个点集里面) 并且两个点集没有交集 英文很难看懂...就是二分图的 ...

bochs安装一系列问题

http://blog.chinaunix.net/uid-23817499-id-3418083.html http://www.mouseos.com/os/tools/bochs.html    ...

在android studio中配置运行时签名

做项目的时候,有时需要用到第三方接口,而基本第三方接口都是要求我们要先进行签名.结果每次调试都得手动进行签名一次,实在麻烦.所以android studio提供了一种在运行的时候自动进行签名的方法,在 ...

ACC(Attribute Component Capability) 即特质,组件,能力

这是一种测试计划的替代方法. ACC的指导原则如下: 1. 避免散漫的文字,推荐使用简明的列表.并不是所有的测试人员都想当小说家,也不具备将一个产品的目标或测试需求表达成散文的技能. 2.不必推销.测 ...

转:asp.net 中的viewstate

概述 ViewState是一个被误解很深的动物了.我希望通过此文章来澄清人们对ViewState的一些错误认识.为了达到这个目的,我决定从头到尾详细的描述一下整个ViewState的工作机制,其中我会 ...

ASP.NET:MVC模板化机制

模版化的核心是定制ViewEngine.完整的模板化必须实现3个功能:1.网站的多套模版(razor)支持 2.模版的多样式(style)支持. 3.按需实现模版:没有实现的加载默认模版. 我们除了要 ...

排查 Azure 虚拟机的远程桌面连接问题

与基于 Windows 的 Azure 虚拟机 (VM) 的远程桌面协议 (RDP) 连接可能会因各种原因而失败,使用户无法访问 VM. 问题可能出在 VM 上的远程桌面服务.网络连接或主计算机上的远 ...

你可能感兴趣的:(opencv调节图片饱和度)