当前位置: 首页 > news >正文

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


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

相关文章:

  • Android仿微信视频聊天本地与远程切换功能
  • 基于springboot+vue+Mysql的超市进销存系统
  • 【JVM】JVM 运行时数据区简介
  • IntelliJ中的非JVM技术
  • 51单片机学习笔记8 中断系统及定时器
  • 深入解析大语言模型显存占用:训练与推理
  • 【TypeScript】解决字面量类型推断错误的四种方式
  • OM6626一款低功耗蓝牙芯片SOC芯片 -电子价签蓝牙芯片
  • 高阶数据结构 <红黑树>
  • Python学习:函数
  • 【线段树二分】第十三届蓝桥杯省赛C++ A组/研究生组 Python 研究生组《扫描游戏》(C++)
  • 【JVM】JVM简介
  • 【C/C++】奇偶位互换
  • mysql安装及操作
  • SpringMVC基础Controller
  • [译]前端离线指南(上)
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • LintCode 31. partitionArray 数组划分
  • Sublime text 3 3103 注册码
  • 高性能JavaScript阅读简记(三)
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 实现简单的正则表达式引擎
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 一、python与pycharm的安装
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • ​插件化DPI在商用WIFI中的价值
  • #前后端分离# 头条发布系统
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • $.proxy和$.extend
  • %check_box% in rails :coditions={:has_many , :through}
  • (2.2w字)前端单元测试之Jest详解篇
  • (30)数组元素和与数字和的绝对差
  • (ZT)一个美国文科博士的YardLife
  • (差分)胡桃爱原石
  • (附源码)springboot工单管理系统 毕业设计 964158
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (已解决)报错:Could not load the Qt platform plugin “xcb“
  • (转) ns2/nam与nam实现相关的文件
  • (转)mysql使用Navicat 导出和导入数据库
  • .Net Memory Profiler的使用举例
  • .Net MVC4 上传大文件,并保存表单
  • .NET3.5下用Lambda简化跨线程访问窗体控件,避免繁复的delegate,Invoke(转)
  • .NET命名规范和开发约定
  • .NET下ASPX编程的几个小问题
  • .net中我喜欢的两种验证码
  • :如何用SQL脚本保存存储过程返回的结果集
  • [ 云计算 | AWS ] AI 编程助手新势力 Amazon CodeWhisperer:优势功能及实用技巧
  • []利用定点式具实现:文件读取,完成不同进制之间的
  • [145] 二叉树的后序遍历 js
  • [C++ 从入门到精通] 12.重载运算符、赋值运算符重载、析构函数
  • [C++] 默认构造函数、参数化构造函数、拷贝构造函数、移动构造函数及其使用案例
  • [ERROR]-Error: failure: repodata/filelists.xml.gz from addons: [Errno 256] No more mirrors to try.
  • [HCIE] IPSec-VPN (手工模式)