最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python調(diào)整圖像hue值結(jié)合ImageEnhance庫以實(shí)現(xiàn)色調(diào)增強(qiáng)

 更新時(shí)間:2023年09月23日 09:45:50   作者:TracelessLe  
這篇文章主要介紹了Python調(diào)整圖像hue值結(jié)合ImageEnhance庫以實(shí)現(xiàn)色調(diào)增強(qiáng),PIL庫中的ImageEnhance類可用于圖像增強(qiáng),可以調(diào)節(jié)圖像的亮度、對(duì)比度、色度和銳度,通過RGB到HSV的變換加調(diào)整可以對(duì)圖像的色調(diào)進(jìn)行調(diào)整,需要的朋友可以參考下

前言

PIL庫中的ImageEnhance類可用于圖像增強(qiáng),可以調(diào)節(jié)圖像的亮度、對(duì)比度、色度和銳度。

在這里插入圖片描述

通過RGB到HSV的變換加調(diào)整可以對(duì)圖像的色調(diào)進(jìn)行調(diào)整。 兩種方法結(jié)合可以達(dá)到更大程度的圖像色調(diào)增強(qiáng)。

調(diào)整hue值

__author__ = 'TracelessLe'
__website__ = 'https://blog.csdn.net/TracelessLe'
import numpy as np
from PIL import Image, ImageEnhance
filename = 'test.png'
pil_img = Image.open(filename).convert('RGB')
hue = np.random.randint(0, 360)
out = hueChange(pil_img, hue/360.)  # 調(diào)整hue值
out.save('out.png')

其中 hueChange 方法實(shí)現(xiàn)如下:

__author__ = 'TracelessLe'
__website__ = 'https://blog.csdn.net/TracelessLe'
import numpy as np
from PIL import Image
def rgb_to_hsv(rgb):
    # Translated from source of colorsys.rgb_to_hsv
    # r,g,b should be a numpy arrays with values between 0 and 255
    # rgb_to_hsv returns an array of floats between 0.0 and 1.0.
    rgb = rgb.astype('float')
    hsv = np.zeros_like(rgb)
    # in case an RGBA array was passed, just copy the A channel
    hsv[..., 3:] = rgb[..., 3:]
    r, g, b = rgb[..., 0], rgb[..., 1], rgb[..., 2]
    maxc = np.max(rgb[..., :3], axis=-1)
    minc = np.min(rgb[..., :3], axis=-1)
    hsv[..., 2] = maxc
    mask = maxc != minc
    hsv[mask, 1] = (maxc - minc)[mask] / maxc[mask]
    rc = np.zeros_like(r)
    gc = np.zeros_like(g)
    bc = np.zeros_like(b)
    rc[mask] = (maxc - r)[mask] / (maxc - minc)[mask]
    gc[mask] = (maxc - g)[mask] / (maxc - minc)[mask]
    bc[mask] = (maxc - b)[mask] / (maxc - minc)[mask]
    hsv[..., 0] = np.select(
        [r == maxc, g == maxc], [bc - gc, 2.0 + rc - bc], default=4.0 + gc - rc)
    hsv[..., 0] = (hsv[..., 0] / 6.0) % 1.0
    return hsv
def hsv_to_rgb(hsv):
    # Translated from source of colorsys.hsv_to_rgb
    # h,s should be a numpy arrays with values between 0.0 and 1.0
    # v should be a numpy array with values between 0.0 and 255.0
    # hsv_to_rgb returns an array of uints between 0 and 255.
    rgb = np.empty_like(hsv)
    rgb[..., 3:] = hsv[..., 3:]
    h, s, v = hsv[..., 0], hsv[..., 1], hsv[..., 2]
    i = (h * 6.0).astype('uint8')
    f = (h * 6.0) - i
    p = v * (1.0 - s)
    q = v * (1.0 - s * f)
    t = v * (1.0 - s * (1.0 - f))
    i = i % 6
    conditions = [s == 0.0, i == 1, i == 2, i == 3, i == 4, i == 5]
    rgb[..., 0] = np.select(conditions, [v, q, p, p, t, v], default=v)
    rgb[..., 1] = np.select(conditions, [v, v, v, q, p, p], default=t)
    rgb[..., 2] = np.select(conditions, [v, p, t, v, v, q], default=p)
    return rgb.astype('uint8')
def hueChange(img, hue):
    arr = np.array(img)
    hsv = rgb_to_hsv(arr)
    hsv[..., 0] = hue
    rgb = hsv_to_rgb(hsv)
    return Image.fromarray(rgb, 'RGB')

基于ImageEnhance方法調(diào)節(jié)圖像色度

在這里插入圖片描述

__author__ = 'TracelessLe'
__website__ = 'https://blog.csdn.net/TracelessLe'
import random
import numpy as np
from PIL import Image, ImageEnhance
filename = 'test.png'
pil_img = Image.open(filename).convert('RGB')
enh_col = ImageEnhance.Color(pil_img)
factor = random.random() * 1.0 + 0.5
out = enh_col.enhance(factor)
out.save('out.png')

合并操作

__author__ = 'TracelessLe'
__website__ = 'https://blog.csdn.net/TracelessLe'
import random
import numpy as np
from PIL import Image, ImageEnhance
def rgb_to_hsv(rgb):
    # Translated from source of colorsys.rgb_to_hsv
    # r,g,b should be a numpy arrays with values between 0 and 255
    # rgb_to_hsv returns an array of floats between 0.0 and 1.0.
    rgb = rgb.astype('float')
    hsv = np.zeros_like(rgb)
    # in case an RGBA array was passed, just copy the A channel
    hsv[..., 3:] = rgb[..., 3:]
    r, g, b = rgb[..., 0], rgb[..., 1], rgb[..., 2]
    maxc = np.max(rgb[..., :3], axis=-1)
    minc = np.min(rgb[..., :3], axis=-1)
    hsv[..., 2] = maxc
    mask = maxc != minc
    hsv[mask, 1] = (maxc - minc)[mask] / maxc[mask]
    rc = np.zeros_like(r)
    gc = np.zeros_like(g)
    bc = np.zeros_like(b)
    rc[mask] = (maxc - r)[mask] / (maxc - minc)[mask]
    gc[mask] = (maxc - g)[mask] / (maxc - minc)[mask]
    bc[mask] = (maxc - b)[mask] / (maxc - minc)[mask]
    hsv[..., 0] = np.select(
        [r == maxc, g == maxc], [bc - gc, 2.0 + rc - bc], default=4.0 + gc - rc)
    hsv[..., 0] = (hsv[..., 0] / 6.0) % 1.0
    return hsv
def hsv_to_rgb(hsv):
    # Translated from source of colorsys.hsv_to_rgb
    # h,s should be a numpy arrays with values between 0.0 and 1.0
    # v should be a numpy array with values between 0.0 and 255.0
    # hsv_to_rgb returns an array of uints between 0 and 255.
    rgb = np.empty_like(hsv)
    rgb[..., 3:] = hsv[..., 3:]
    h, s, v = hsv[..., 0], hsv[..., 1], hsv[..., 2]
    i = (h * 6.0).astype('uint8')
    f = (h * 6.0) - i
    p = v * (1.0 - s)
    q = v * (1.0 - s * f)
    t = v * (1.0 - s * (1.0 - f))
    i = i % 6
    conditions = [s == 0.0, i == 1, i == 2, i == 3, i == 4, i == 5]
    rgb[..., 0] = np.select(conditions, [v, q, p, p, t, v], default=v)
    rgb[..., 1] = np.select(conditions, [v, v, v, q, p, p], default=t)
    rgb[..., 2] = np.select(conditions, [v, p, t, v, v, q], default=p)
    return rgb.astype('uint8')
def hueChange(img, hue):
    arr = np.array(img)
    hsv = rgb_to_hsv(arr)
    hsv[..., 0] = hue
    rgb = hsv_to_rgb(hsv)
    return Image.fromarray(rgb, 'RGB')
if __name__ == "__main__":
	filename = 'test.png'
	pil_img = Image.open(filename).convert('RGB')
	hue = np.random.randint(0, 360)
	pil_img2 = hueChange(pil_img, hue/360.)
	enh_col = ImageEnhance.Color(pil_img2)
	factor = random.random() * 1.0 + 0.5
	out = enh_col.enhance(factor)
	out.save('out.png')

到此這篇關(guān)于Python調(diào)整圖像hue值結(jié)合ImageEnhance庫以實(shí)現(xiàn)色調(diào)增強(qiáng)的文章就介紹到這了,更多相關(guān)ImageEnhance庫實(shí)現(xiàn)色調(diào)增強(qiáng)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 教你怎么用PyCharm為同一服務(wù)器配置多個(gè)python解釋器

    教你怎么用PyCharm為同一服務(wù)器配置多個(gè)python解釋器

    當(dāng)我們?cè)诜?wù)器上創(chuàng)建了多個(gè)虛擬環(huán)境時(shí),也可以在 PyCharm 中配置這些虛擬環(huán)境,方便不同的項(xiàng)目使用不同的環(huán)境,然而按照網(wǎng)上教程添加多個(gè)python解釋器后,PyCharm會(huì)自動(dòng)幫我們創(chuàng)建多個(gè)重復(fù)的服務(wù)器,本文主要給出該問題的解決方法,同時(shí)也對(duì)添加解釋器做一個(gè)詳細(xì)的講解
    2021-05-05
  • Python中Selenium的基本使用步驟

    Python中Selenium的基本使用步驟

    Selenium是一個(gè)用于自動(dòng)化瀏覽器操作的Python庫,常用于Web應(yīng)用的測(cè)試和爬蟲等場(chǎng)景,本文給大家介紹Python中Selenium的基本使用教程,感興趣的朋友一起看看吧
    2023-11-11
  • Python opencv缺陷檢測(cè)的實(shí)現(xiàn)及問題解決

    Python opencv缺陷檢測(cè)的實(shí)現(xiàn)及問題解決

    這篇文章主要介紹了Python opencv缺陷檢測(cè)的實(shí)現(xiàn)及問題解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Python實(shí)現(xiàn)Socket.IO的完整指南

    Python實(shí)現(xiàn)Socket.IO的完整指南

    Socket.IO?是一個(gè)基于?WebSocket?協(xié)議的實(shí)時(shí)雙向通信庫,它為客戶端和服務(wù)器端提供了事件驅(qū)動(dòng)的接口,使開發(fā)者能夠輕松實(shí)現(xiàn)實(shí)時(shí)消息的傳遞,本文給大家介紹了Python實(shí)現(xiàn)Socket.IO的完整指南,需要的朋友可以參考下
    2025-09-09
  • 詳解?python?logging日志模塊

    詳解?python?logging日志模塊

    這篇文章主要介紹了詳解?python?logging日志模塊,記錄日志最簡單的方法就是在你想要記錄的地方加上一句?print?,?我相信無論是新手還是老鳥都經(jīng)常這么干。在簡單的代碼中或者小型項(xiàng)目中這么干一點(diǎn)問題都沒有,需要的朋友可以參考下
    2022-01-01
  • python3.8動(dòng)態(tài)人臉識(shí)別的實(shí)現(xiàn)示例

    python3.8動(dòng)態(tài)人臉識(shí)別的實(shí)現(xiàn)示例

    這篇文章主要介紹了python3.8動(dòng)態(tài)人臉識(shí)別的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • sklearn.metrics 中的f1-score簡介

    sklearn.metrics 中的f1-score簡介

    這篇文章主要介紹了sklearn.metrics 中的f1-score簡介,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-05-05
  • Python中JSON數(shù)據(jù)的相互轉(zhuǎn)化詳解

    Python中JSON數(shù)據(jù)的相互轉(zhuǎn)化詳解

    這篇文章主要介紹了Python中JSON數(shù)據(jù)的相互轉(zhuǎn)化詳解,JSON 是一種輕量級(jí)的數(shù)據(jù)交互格式,可以按照 JSON 指定的格式去組織和封裝數(shù)據(jù),
    JSON 本質(zhì)是一個(gè)帶有特定格式的字符串,需要的朋友可以參考下
    2023-12-12
  • 使用Python的networkx繪制精美網(wǎng)絡(luò)圖教程

    使用Python的networkx繪制精美網(wǎng)絡(luò)圖教程

    今天小編就為大家分享一篇使用Python的networkx繪制精美網(wǎng)絡(luò)圖教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • Python中Matplotlib的簡單使用

    Python中Matplotlib的簡單使用

    這篇文章主要介紹了Python中Matplotlib的簡單使用,Matplotlib是一個(gè)用于繪制數(shù)據(jù)可視化圖形的Python庫,支持繪制各種靜態(tài),動(dòng)態(tài),交互式的圖表,它是數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)領(lǐng)域最流行的可視化庫之一,需要的朋友可以參考下
    2023-07-07

最新評(píng)論

洞头县| 宁陕县| 大足县| 上饶县| 绵竹市| 方城县| 洪洞县| 平山县| 璧山县| 柳林县| 莱州市| 海安县| 望城县| 余干县| 资源县| 韶山市| 长泰县| 仁化县| 德安县| 西宁市| 夏津县| 岫岩| 四川省| 旅游| 汝阳县| 定南县| 宁乡县| 吉水县| 青州市| 如皋市| 七台河市| 黄平县| 永寿县| 富川| 拜泉县| 长治县| 长沙县| 舒兰市| 年辖:市辖区| 泰州市| 上思县|