Pillow教程06:将图片中出现的黄色和红色,改成绿色

---------------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色相值范围,这样就可以去掉一些残留的颜色斑点,使图像更完美。

python 复制代码
# @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')

完毕!!感谢您的收看

----------★★历史博文集合★★----------

我的零基础Python教程,Python入门篇 进阶篇 视频教程 Py安装py项目 Python模块 Python爬虫 Json Xpath 正则表达式 Selenium Etree CssGui程序开发 Tkinter Pyqt5 列表元组字典数据可视化 matplotlib 词云图 Pyecharts 海龟画图 Pandas Bug处理 电脑小知识office自动化办公 编程工具 NumPy Pygame 图像处理

相关推荐
eybk几秒前
用python的socket写一个局域网传输文件的程序
服务器·网络·python
程序员的世界你不懂10 分钟前
【Flask】实现一个前后端一体的项目-脚手架
后端·python·flask
花酒锄作田33 分钟前
[MCP][01]简介与概念
python·llm·mcp
Python私教36 分钟前
Django全栈班v1.04 Python基础语法 20250912 上午
后端·python·django
言之。38 分钟前
Django REST框架:ModelViewSet全面解析
数据库·python·django
Pocker_Spades_A1 小时前
Python快速入门专业版(二十六):Python函数基础:定义、调用与返回值(Hello函数案例)
开发语言·python
周周记笔记2 小时前
学习笔记:Python的起源
开发语言·python
魂尾ac2 小时前
Django + Vue3 前后端分离技术实现自动化测试平台从零到有系列 <第一章> 之 注册登录实现
后端·python·django·vue
Source.Liu2 小时前
【Pywinauto库】10.7 pywinauto.controls.uia_controls控件
windows·python·自动化
人工干智能2 小时前
建自己的Python项目仓库,使用工具:GitHub(远程仓库)、GitHub Desktop(版本控制工具)、VSCode(代码编辑器)
python·编辑器·github