【问题标题】:How could I adjust color of an image with python-opencv?如何使用 python-opencv 调整图像的颜色?
【发布时间】:2019-07-17 07:14:52
【问题描述】:

我想做的是调整图像,例如调整彩色电视的色彩平衡。假设比例在 (0, 1) 之间,其中 0 表示将图像调整为黑白,而 1 表示使用原始图像的颜色。我怎么能用 python-opencv 做到这一点?

【问题讨论】:

    标签: python colors computer-vision opencv3.0


    【解决方案1】:
    import numpy as np
    from matplotlib.pyplot import imread
    import matplotlib.pyplot as plt
    import cv2
    
    
    def color_balance(image, balance):
        image2 = np.zeros(image.shape)
        image2[:,:,0] = ((1 + 2*balance)*image[:,:,0] + (1 - balance)*image[:,:,1] + (1 - balance)*image[:,:,2])/3
        image2[:,:,1] = ((1 + 2*balance)*image[:,:,1] + (1 - balance)*image[:,:,0] + (1 - balance)*image[:,:,2])/3
        image2[:,:,2] = ((1 + 2*balance)*image[:,:,2] + (1 - balance)*image[:,:,0] + (1 - balance)*image[:,:,1])/3
        image2 = image2/255
        return image2
    
    
    image = cv2.imread('./test.jpeg')
    image = np.array(image).astype(int)
    cv2.imshow("image", color_balance(image, 1))
    cv2.waitKey(0)
    cv2.imshow("image", color_balance(image, 0.5))
    cv2.waitKey(0)
    cv2.imshow("image", color_balance(image, 0))
    cv2.waitKey(0)
    

    color_balance函数中,如果balance = 1每个像素的值将保持不变,如果balance = 0每个像素的值将是所有3个通道的平均值。

    【讨论】:

    • 为什么要将image2除以255?
    • 这只是因为如果数字是浮点数,python 假定像素在[0 , 1] 范围内,因此您可以将它们转换为整数或将它们除以 255。
    • 谢谢,你知道如何增强颜色。这种方法可以衰减效果很好的颜色,我该如何增强它?
    • 只需在同一函数中使用值大于 1 的 balance
    猜你喜欢
    • 2012-04-27
    • 2017-08-23
    • 1970-01-01
    • 2018-10-07
    • 2020-12-08
    • 2018-11-20
    • 1970-01-01
    • 1970-01-01
    • 2017-02-15
    相关资源
    最近更新 更多