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

news/2024/7/21 5:03:32 标签: pillow, Python教程, python, 图像处理

---------------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 图像处理


http://www.niftyadmin.cn/n/5454427.html

相关文章

(vue)el-table表格回显返回的已勾选的数据

(vue)el-table表格编辑时回显返回的已勾选的数据 tableData数据&#xff1a; el-tableref"multipleTable":data"tableData"... >...<el-table-column prop"result" label"相关.." align"center" width"220"…

校园app开发流程-uniapp开发-支持APP小程序H5-源码交付-跑腿-二手市场-交友论坛等功能,学校自由选择!

随着科技的不断发展&#xff0c;智慧校园系统和跑腿外卖小程序已经成为当今社会的热门话题。作为未来的重要趋势之一&#xff0c;科技在教育领域中的应用越来越广泛。本文将探讨智慧校园系统和跑腿外卖小程序的开发过程&#xff0c;并阐述如何利用科技“育”见未来 一、智慧校…

电脑windows 蓝屏【恢复—无法加载操作系统,原因是关键系统驱动程序丢失或包含错误。.......】

当你碰到下图这种情况的电脑蓝屏&#xff0c;先别急着重装系统&#xff0c;小编本来也是想重装系统的&#xff0c;但是太麻烦&#xff0c;重装系统后你还得重装各种软件&#xff0c;太麻烦了&#xff01;&#xff01; 这种情况下&#xff0c;你就拿出你的启动U盘&#xff0c;进…

2024年4月份 风车IM即时通讯系统APP源码 版完整苹果安卓教程

关于风车IM&#xff0c;你在互联网上能随便下载到了基本都是残缺品&#xff0c; 经过我们不懈努力最终提供性价比最高&#xff0c;最完美的版本&#xff0c; 懂货的朋友可以直接下载该版本使用&#xff0c;经过严格测试&#xff0c;该版本基本完美无缺。 下载地址&#xff1a;…

Vue 二次封装组件的艺术与实践

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

Etcd 基本入门

1&#xff1a;什么是 Etcd ? Etcd 是 CoreOS 团队于2013年6月发起的开源项目&#xff0c;它的目标是构建一个高可用的分布式键值(key-value)数据库。etcd内部采用raft协议作为一致性算法&#xff0c;Etcd基于 Go 语言实现。 名字由来&#xff0c;它源于两个方面&#xff0c;…

Dockerfile:自定义镜像

Dockerfile 是一个文本文件&#xff0c;其中包含了一系列用于自动化构建Docker镜像的指令。通过编写Dockerfile&#xff0c;开发者能够明确地定义一个软件应用及其运行环境应该如何被封装进一个可移植、可重复构建的Docker镜像中。 第一步&#xff1a;在/tmp文件下新建docker…

前端学习-CSS基础-Day2

一、Emmet 1.快速生成HTML结构标签 a.生成标签 直接输入标签名 tab键 b.如果想要生成多个相同标签 加上就可以了&#xff0c;比如div3 tab就可以快速生成3个diV c.如果有父子级关系的标签&#xff0c;可以用>比如ul>li tab就可以了 d.如果有兄弟关系的标签&#xff0c…