banner
Matrix

Matrix

Abyss
email
github

圖片顏色轉換

一個需求是將圖片中的紅色部分轉換為藍色部分,最初的想法是通過通道互換來解決,但這可能會產生一些混合色的顏色變換。例如,橙色變為紫色(黃 + 紅 || 黃綠 + 藍)。

image-1709875207212

另一種思路是色彩空間變換,在一個空間內解決不了的問題,通過坐標變換轉換到另一個空間求解,再轉換回來,而另一個空間裡面我們的操作不會對原空間施加預期之外的操作。

image-1709875571876

實現代碼:

import cv2
import numpy as np

image = cv2.imread('C:/Users/admin/Desktop/test.png')

HSVImage = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)

lowerRed1 = np.array([0, 64, 50])
upperRed1 = np.array([10, 255, 255])
lowerRed2 = np.array([160, 64, 50])
upperRed2 = np.array([180, 255, 255])

redMask1 = cv2.inRange(HSVImage, lowerRed1, upperRed1)
redMask2 = cv2.inRange(HSVImage, lowerRed2, upperRed2)
fullMask = redMask1 + redMask2

blueHue = 60
HSVImage[:, :, 0] = np.where(fullMask == 255, blueHue, HSVImage[:, :, 0])

finalImage = cv2.cvtColor(HSVImage, cv2.COLOR_HSV2BGR)

cv2.imwrite('C:/Users/admin/Desktop/out.png', finalImage)
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。