代码之家  ›  专栏  ›  技术社区  ›  Bill Bridge

将图像重新着色为其他基色并保持渐变

  •  1
  • Bill Bridge  · 技术社区  · 8 年前

    我想把一幅图像重新着色成另一种基色,但这样可以保持渐变。例如,在这张照片中,底色是绿色。

    enter image description here

    import numpy as np
    import cv2
    dg = [0,59,10]
    mg = [0,91,16]
    lg = [0,106,18]
    db = [92,71,0]
    mb = [153,119,0]
    lb = [204,163,93]
    
    im = cv2.imread("C:/Temp/recolor_source.png")
    im[np.where((im == dg).all(axis=2))] = db
    im[np.where((im == mg).all(axis=2))] = mb
    im[np.where((im == lg).all(axis=2))] = lb
    cv2.imwrite("C:/Temp/recolor_result.png", im)
    

    结果如下:

    enter image description here

    1 回复  |  直到 8 年前
        1
  •  1
  •   Bill Bridge    8 年前

    这是马克·塞切尔建议的答案。

    import cv2
    
    im = cv2.imread("C:/Temp/recolor_source.png")
    hsv = cv2.cvtColor(im, cv2.COLOR_BGR2HSV)
    hchannel = hsv[:, :, 0]
    hchannel = 40 + hchannel
    hsv[:, :, 0] = hchannel
    rgb = cv2.cvtColor(hsv, cv2.COLOR_HSV2BGR)
    
    cv2.imwrite("C:/Temp/recolor_result.png", rgb)
    

    enter image description here