53 lines
1.6 KiB
Python
53 lines
1.6 KiB
Python
#!/usr/bin/python
|
||
# coding:utf-8
|
||
|
||
import cv2
|
||
import numpy as np
|
||
|
||
# 读取彩色图
|
||
img = cv2.imread('2.jpg') # 读取原始图像 (BGR格式)
|
||
|
||
if img is None:
|
||
print("错误:无法读取图像 '1.png',请确认文件存在且路径正确。")
|
||
exit()
|
||
|
||
# 转为RGB进行处理(便于归一化等操作)
|
||
img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
|
||
|
||
# 归一化到0~1
|
||
img_normalized = img_rgb / 255.0
|
||
|
||
# 定义两个不同的gamma值
|
||
gamma1 = 1 / 1.5 # 约等于 0.67,提亮暗部
|
||
gamma2 = 1.5 # 压暗亮部
|
||
|
||
# 伽马校正
|
||
img_gamma1 = np.power(img_normalized, gamma1)
|
||
img_gamma2 = np.power(img_normalized, gamma2)
|
||
|
||
# 转回 0~255 并转换为 uint8 类型
|
||
img_gamma1 = np.uint8(img_gamma1 * 255)
|
||
img_gamma2 = np.uint8(img_gamma2 * 255)
|
||
|
||
# 转回 BGR 格式以便用 OpenCV 保存(OpenCV 默认使用 BGR)
|
||
img_gamma1_bgr = cv2.cvtColor(img_gamma1, cv2.COLOR_RGB2BGR)
|
||
img_gamma2_bgr = cv2.cvtColor(img_gamma2, cv2.COLOR_RGB2BGR)
|
||
|
||
# 保存图像
|
||
cv2.imwrite('original.png', img) # 原始图像
|
||
cv2.imwrite('gamma_0.67.png', img_gamma1_bgr) # gamma = 1/1.5 ≈ 0.67
|
||
cv2.imwrite('gamma_1.5.png', img_gamma2_bgr) # gamma = 1.5
|
||
|
||
print("已保存三张图像:")
|
||
print(" original.png")
|
||
print(" gamma_0.67.png")
|
||
print(" gamma_1.5.png")
|
||
|
||
# 可选:显示图像(如果在有GUI的环境下运行)
|
||
show_images = False # 设置为 True 可显示图像
|
||
if show_images:
|
||
cv2.imshow('Original', img)
|
||
cv2.imshow('Gamma = 1/1.5 (~0.67)', img_gamma1_bgr)
|
||
cv2.imshow('Gamma = 1.5', img_gamma2_bgr)
|
||
cv2.waitKey(0)
|
||
cv2.destroyAllWindows() |