gpt4 book ai didi

python - 如何使用 OpenCV-Python 更改某个区域的色调

转载 作者:行者123 更新时间:2023-12-02 16:59:29 25 4
gpt4 key购买 nike

我想编辑某个区域的hsv值
The picture I want to change color of
我将图像的所有紫色部分更改为绿色。这是我在图像编辑软件中制作的结果,只是为了展示一个例子。 The Result
是的,我无缘无故地把它弄黑了,但我只是想让 Blade 变绿而不是 Handlebars

最佳答案

这是一种在 Python/OpenCV 中通过改变色调来做到这一点的方法。
输入:
enter image description here

import cv2
import numpy as np

# load image with alpha channel
img = cv2.imread('sword_purple.png', cv2.IMREAD_UNCHANGED)

# extract alpha channel
alpha = img[:,:,3]

# extract bgr channels
bgr = img[:,:,0:3]

# convert to HSV
hsv = cv2.cvtColor(bgr, cv2.COLOR_BGR2HSV)
#h = hsv[:,:,0]
#s = hsv[:,:,1]
#v = hsv[:,:,2]
h,s,v = cv2.split(hsv)

# purple is 276 in range 0 to 360; so half in OpenCV
# green is 120 in range 0 to 360; so half in OpenCV
purple = 138
green = 60

# diff color (green - hue)
diff_color = green - purple

# modify hue channel by adding difference and modulo 180
hnew = np.mod(h + diff_color, 180).astype(np.uint8)

# recombine channels
hsv_new = cv2.merge([hnew,s,v])

# convert back to bgr
bgr_new = cv2.cvtColor(hsv_new, cv2.COLOR_HSV2BGR)

# put alpha back into bgr_new
bgra = cv2.cvtColor(bgr_new, cv2.COLOR_BGR2BGRA)
bgra[:,:,3] = alpha

# save output
cv2.imwrite('sword_alpha.png', alpha)
cv2.imwrite('sword_bgr.png', bgr)
cv2.imwrite('sword_bgr_new.png', bgr_new)
cv2.imwrite('sword_green.png', bgra)

# Display various images to see the steps
cv2.imshow('alpha',alpha)
cv2.imshow('bgr',bgr)
cv2.imshow('bgr_new',bgr_new)
cv2.imshow('bgra',bgra)
cv2.waitKey(0)
cv2.destroyAllWindows()

结果:
enter image description here

关于python - 如何使用 OpenCV-Python 更改某个区域的色调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62648862/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com