opencv调节图片饱和度_OpenCV调整彩色图像的饱和度和亮度
問題
如何調(diào)整彩色圖像的飽和度和亮度
解決思路
詳細(xì)步驟:
將RGB圖像值歸一化到[0, 1]
然后使用函數(shù)cvtColor進(jìn)行色彩空間的轉(zhuǎn)換
接下來可以根據(jù)處理灰度圖像對比度增強(qiáng)伽馬變換或者線性變換調(diào)整飽和度和亮度分量
最后轉(zhuǎn)換到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)
# 圖像歸一化,且轉(zhuǎn)換為浮點(diǎn)型
fImg = image.astype(np.float32)
fImg = fImg / 255.0
# 顏色空間轉(zhuǎn)換 BGR轉(zhuǎn)為HLS
hlsImg = cv2.cvtColor(fImg, cv2.COLOR_BGR2HLS)
l = 100
s = 100
MAX_VALUE = 100
# 調(diào)節(jié)飽和度和亮度的窗口
cv2.namedWindow("l and s", cv2.WINDOW_AUTOSIZE)
def nothing(*arg):
pass
# 滑動(dòng)塊
cv2.createTrackbar("l", "l and s", l, MAX_VALUE, nothing)
cv2.createTrackbar("s", "l and s", s, MAX_VALUE, nothing)
# 調(diào)整飽和度和亮度后的效果
lsImg = np.zeros(image.shape, np.float32)
# 調(diào)整飽和度和亮度
while True:
# 復(fù)制
hlsCopy = np.copy(hlsImg)
# 得到 l 和 s 的值
l = cv2.getTrackbarPos('l', 'l and s')
s = cv2.getTrackbarPos('s', 'l and s')
# 1.調(diào)整亮度(線性變換) , 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)
# 顯示調(diào)整后的效果
cv2.imshow("l and s", lsImg)
ch = cv2.waitKey(5)
# 按 ESC 鍵退出
if ch == 27:
break
elif ch == ord('s'):
# 按 s 鍵保存并退出
# 保存結(jié)果
lsImg = lsImg * 255
lsImg = lsImg.astype(np.uint8)
cv2.imwrite("lsImg.jpg", lsImg)
break
# 關(guān)閉所有的窗口
cv2.destroyAllWindows()
if __name__ == "__main__":
main()
總結(jié)
以上是生活随笔為你收集整理的opencv调节图片饱和度_OpenCV调整彩色图像的饱和度和亮度的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: view 冒号作用 组件中属性_如何解析
- 下一篇: 拯救者r7000怎么关闭触控板_联想拯救