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)
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。