如何使用 python-opencv 调整图像的颜色?
How could I adjust color of an image with python-opencv?
我想做的是像调整彩电的色彩平衡一样调整图像。假设比率介于 (0, 1) 之间,其中 0 表示将图像调整为黑白,而 1 表示使用原始图像的颜色。我怎么能用 python-opencv 做到这一点?
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个通道的平均值。
我想做的是像调整彩电的色彩平衡一样调整图像。假设比率介于 (0, 1) 之间,其中 0 表示将图像调整为黑白,而 1 表示使用原始图像的颜色。我怎么能用 python-opencv 做到这一点?
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个通道的平均值。