-
读取原始图像:使用
cv2.imread()
函数从指定路径读取一张图片,并将其存储在变量image
中。 -
创建光照掩模:生成一个与原图大小相同但完全黑色的图像(使用
np.zeros_like()
),这将作为后续光照效果的基础。 -
定义光照中心点:确定光照效果的中心位置,默认为图像的几何中心。
-
创建圆形光照区域:在光照掩模上,以中心点为中心绘制一个白色圆圈,代表光线集中区域。
-
调整光照强度:通过
cv2.addWeighted()
函数调整光照掩模的亮度,使其看起来更亮,亮度因子设为100。 -
应用光照掩模:将调整后的光照掩模叠加到原始图像上,以产生局部亮度增强的效果。
-
全局增加亮度:使用
np.where()
函数确保像素值不超过255的前提下,增加整个图像的亮度。 -
调整对比度:通过
cv2.convertScaleAbs()
函数,调整图像的对比度,使图像细节更加分明。 -
增加饱和度:先将图像转换为HSV色彩空间,然后调整饱和度通道的值,再转回BGR色彩空间,从而改变图像的颜色饱和度。
-
增加高光效果:再次使用
np.where()
函数,确保像素值不超过255的前提下,增加图像的高光效果,使得明亮区域更加突出。 -
保存处理后的图像:最后,将经过上述一系列处理后的图像保存到指定路径。
import cv2 import numpy as np # 读取原始图像 image = cv2.imread('D:/Desktop/1/OIP-C.jpg') # 创建一个和原始图像大小相同的全黑图像作为光照掩模 lighting_mask = np.zeros_like(image) # 定义光照中心点坐标(这里以图像中心为例) center_x, center_y = image.shape[1] // 2, image.shape[0] // 2 # 在光照掩模中心点位置添加一个白色圆形区域,表示光照集中的位置 cv2.circle(lighting_mask, (center_x, center_y), 100, (255, 255, 255), -1) # 调整光照掩模的强度,使光照更加明亮 brightness_factor = 100 bright_mask = cv2.addWeighted(lighting_mask, brightness_factor, 0, 0, 0) # 将光照掩模应用到原始图像上 bright_image = cv2.add(image, bright_mask) # 增加亮度 brightness = 50 bright_image = np.where((255 - image) < brightness, 255, image + brightness) # 增加对比度 contrast = 1.5 contrast_image = cv2.convertScaleAbs(bright_image, alpha=contrast, beta=0) # 增加饱和度 saturation = 1.5 hsv_image = cv2.cvtColor(contrast_image, cv2.COLOR_BGR2HSV) hsv_image[:, :, 1] = np.clip(hsv_image[:, :, 1] * saturation, 0, 255) saturated_image = cv2.cvtColor(hsv_image, cv2.COLOR_HSV2BGR) # 增加高光效果 highlight = 50 highlight_image = np.where((255 - saturated_image) < highlight, 255, saturated_image + highlight) # 保存处理后的图像 cv2.imwrite('D:/Desktop/1/output_image.jpg', highlight_image)