手动实现白平衡Python代码
时间: 2024-06-15 09:02:08 浏览: 108
手动实现白平衡在Python中通常涉及到图像处理和色彩校正技术。白平衡是摄影中的一个重要概念,用于纠正因光线不同而导致的图像色彩偏差。以下是一个简单的示例,使用OpenCV库来演示如何手动调整照片的白平衡:
```python
import cv2
import numpy as np
# 读取图像
def load_image(image_path):
img = cv2.imread(image_path)
if img is None:
print("Failed to load image.")
return None
return img
# 定义手动白平衡函数
def manual_white_balance(img, reference_color=(255, 255, 255)):
# 将图像转换为HSV颜色空间,便于操作色度通道
hsv_img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# 获取RGB到HSV参考色对应的HSV值
ref_hsv = cv2.cvtColor(np.array([reference_color]), cv2.COLOR_BGR2HSV)
# 计算HUE通道的差值
hue_shift = np.mean(ref_hsv[:, :, 0] - hsv_img[:, :, 0])
# 应用色彩偏移
balanced_hsv = hsv_img + np.array([[[hue_shift, 0, 0]]])
# 将调整后的HSV图像转换回BGR
balanced_bgr = cv2.cvtColor(balanced_hsv, cv2.COLOR_HSV2BGR)
return balanced_bgr
# 使用函数并显示结果
image_path = "path_to_your_image.jpg" # 替换为你要调整的图片路径
balanced_img = manual_white_balance(load_image(image_path))
# 显示原始和调整后的图像
cv2.imshow("Original Image", img)
cv2.imshow("Balanced Image", balanced_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个例子中,我们首先读取图像,然后将其转换为HSV颜色空间。接着,我们找到一个参考颜色(通常是白色),计算出图像中HUE通道相对于该参考颜色的平均偏移量。最后,我们对HUE通道进行调整,并将调整后的HSV图像转换回BGR格式。
阅读全文