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)
加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。