---------------Pillow教程集合---------------
Python项目18:使用Pillow模块,随机生成4位数的图片验证码
Python教程93:初识Pillow模块(创建Image对象+查看属性+图片的保存与缩放)
Pillow教程02:图片的裁剪+复制粘贴+旋转角度+翻转+降噪滤镜(平滑、锐化、边缘检测)
Pillow教程03:图像处理的基本步骤+分离split+合并merge+混合blend+composite遮罩
Pillow教程04:学习Draw绘制+Font字体+alpha composite方法,给图片添加文字水印
Pillow教程05:NumPy数组和PIL图像的相互转化
1.HSV(Hue, Saturation, Value)是一种颜色空间,也被称为HSB(Hue, Saturation, Brightness)。在这种颜色空间中,颜色被表示为色相(Hue)、饱和度(Saturation)和明度(Value或Brightness)三个分量的组合。
色相(Hue):色相表示颜色的基本属性,即我们通常所说的“是什么颜色”。在HSV中,色相通常表示为0到360度的角度,其中0(或360)度代表红色,120度代表绿色,240度代表蓝色。随着角度的变化,颜色在色轮上平滑过渡。
饱和度(Saturation):饱和度表示颜色的纯度或强度。在HSV中,饱和度是一个百分比值,从0%(灰色)到100%(完全饱和)。饱和度越高,颜色越鲜艳;饱和度越低,颜色越接近灰色。
明度(Value/Brightness):明度表示颜色的明暗程度。在HSV中,明度也是一个百分比值,从0%(黑色)到100%(白色)。明度越高,颜色越亮;明度越低,颜色越暗。
HSV色彩空间对照表图
2.把图片中识别的红色和橙黄色像素,更改为(绿色)
代码解析:示例使用了numpy库来更方便地处理图像数据。其中red_lower, red_upper, yellow_lower, 和 yellow_upper 这些变量表示红色和黄色在HSV色相空间中的范围。这些值可能需要根据你的具体图像和颜色定义进行调整。同样,set_color_hue变量表示绿色的色相值,也可以根据你的需要进行调整。
最后,这个代码没有处理饱和度(S)和明度(V)值的变化,这可能会导致修改后的颜色看起来与原始图像中的颜色不同。如果需要更精细的控制,你可能需要同时调整这些值。
原图
修改后的图片
自己可以进一步,在下面的源码基础上,调整红色和黄色的HSV色相值范围,这样就可以去掉一些残留的颜色斑点,使图像更完美。
# @Author : 小红牛
# 微信公众号:WdPython
from PIL import Image
import numpy as np
# 1.定义红色和黄色的HSV色相范围
red_lower, red_upper = 0, 19
yellow_lower, yellow_upper = 20, 60 # 假设的黄色范围,可能需要调整
# 设置要修改的颜色值
set_color_hue = 70
# 打开图片
image = Image.open('img_1.png')
# 2.转换到HSV色彩空间
hsv_image = image.convert('HSV')
# 获取图像的尺寸
width, height = hsv_image.size
# 3.创建一个空的numpy数组来存储修改后的HSV数据
hsv_datas = np.array(hsv_image)
print('修改前,的HSV数组数据'.center(30, '-'))
print(hsv_datas)
# 4.遍历图像的每个像素
for y in range(height):
for x in range(width):
h, s, v = hsv_datas[y, x][:3]
# 5.检查像素是否在红色或黄色范围内
if red_lower <= h <= red_upper or yellow_lower <= h <= yellow_upper:
# 将颜色h值替换
# print(hsv_datas[y, x], type(hsv_datas[y, x]))
hsv_datas[y, x][0] = set_color_hue
print('修改后,的数组数据'.center(30, '-'))
print(hsv_datas)
# 6.将修改后的numpy数组转回Pillow图像
hsv_image_modified = Image.fromarray(hsv_datas, 'HSV')
# 转换回RGB色彩空间
rgb_image_modified = hsv_image_modified.convert('RGB')
# 7.保存修改后的图片
rgb_image_modified.save('example_modified.png')
完毕!!感谢您的收看
----------★★历史博文集合★★----------