【工具】PIL图片颜色处理

使用前置函数,用于图片效果显示

from PIL import Image, ImageOps, ImageEnhance
import matplotlib.pyplot as pltclass SHOW:def __init__(self):self.idx = 0# 创建宽10英寸、高90英寸self.fig = plt.figure(figsize=(10,90))def add(self, img, title):self.idx += 1# 创建单元格 55行,每行5个ax = self.fig.add_subplot(55, 5, self.idx, xticks=[], yticks=[])ax.imshow(img)ax.set_title(title)show = SHOW()img = Image.open('../data/f1.png').convert('RGB')show.add(img, 'source')

1、调整图片亮度

from PIL import Image, ImageEnhance# 打开图片文件
image = Image.open("input.jpg").convert('RGB')# 创建一个Brightness对象,设置亮度因子为0.5(变暗)
enhancer = ImageEnhance.Brightness(image)
darker_image = enhancer.enhance(0.5)# 创建一个Brightness对象,设置亮度因子为1.5(变亮)
enhancer = ImageEnhance.Brightness(image)
brighter_image = enhancer.enhance(1.5)# 保存调整后的图片
darker_image.save("darker.jpg")
brighter_image.save("brighter.jpg")

2、取反色

from PIL import Image, ImageOps# 打开图片文件
image = Image.open("input.jpg").convert('RGB')# 使用ImageOps.invert()函数将图片取反色
inverted_image = ImageOps.invert(image) 

3、提取rgb通道

show = SHOW()
# 默认是RGBL
img = Image.open('../data/f1.png').convert('RGB')
r,g,b = img.split()show.add(r, 'r')
show.add(g, 'g')
show.add(b, 'b')

4、转灰度图

img = Image.open('../data/f1.png')
img = img.convert('L')show.add(img, 'gray')

5、颜色通道合并

Image.merge(mode='RGBA', bands=[r,g,b,r]) 

根据不同的mode,需要的通道数有所区分

使用 r,g,b,l = Image.open('../data/f1.png').split()

Image.merge() 函数中的 mode 参数用于指定输出图像的模式,它决定了图像的颜色空间和通道配置。PIL(Python Imaging Library)支持多种不同的模式,这些模式定义了图像的颜色深度和类型。以下是一些常见的 mode 参数选项:

  • 'L': 表示灰度图像,只有一个亮度通道。
  • 'RGB': 表示红绿蓝三原色图像,没有透明度通道。
  • 'RGBA': 表示红绿蓝三原色加上一个透明度通道的图像。
  • 'CMYK': 表示青、洋红、黄和黑色四个印刷颜色通道,常用于印刷行业。
  • 'YCbCr': 表示亮度和两个色差通道,常用于视频编码。

除了上述提到的几种模式,PIL还支持其他多种色彩模式,如 'HSV'(色相、饱和度、明度)、'I'(32位有符号整数)、'F'(32位浮点数)等。每种模式都有其特定的用途和适用场景。

img = Image.open('../data/f1.png')
gray = img.convert('L')  img = Image.open('../data/f1.png').convert('RGB')
r,g,b = img.split()for c1 in [r,g,b]:for c2 in [r,g,b]:for c3 in [r,g,b]: show.add(Image.merge(mode='RGB', bands=[c1,c2,c3]), '')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/723190.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【JavaEE】_Spring MVC项目之使用对象传参

目录 1. 使用对象传参 2. 后端参数重命名问题 2.1 关于RequestPara注解 本专栏关于Spring MVC项目的单个及多个参数传参一文中,已经介绍过了对于不同个数的参数传参问题,原文链接如下: 【JavaEE】_Spring MVC 项目单个及多个参数传参-CSD…

2024高频前端面试题 Vue2 和 Vue3 篇

* Vue2 和 Vue3的区别: 1)双向数据绑定原理的区别 2)根节点的不同 Vue2只能一个根节点 Vue3在组件中可以放置多个根节点 3)Vue3中采用composition API vue2:采用的选项型API(opsition API) vue3:采用的组合型API(composition A…

分类算法入门:以鸢尾花数据集为例

近两年人工智能技术蓬勃发展,OpenAI连续放出ChatGPT、Sora等“王炸”产品,大模型、AIGC等技术带来了革命性的提升,很多人认为人工智能将引领第四次工业革命。国内各大互联网公司也是重点投资布局,从个人角度来说要尽快跟上时代的潮…

Node.js最准确历史版本下载(以下载Node.js16.17.1版本为例)

先进入官网:Node.js https://nodejs.org/en 括号中LTS代表稳定版本. 嫌其他冗余博客帖子多,找起来费眼睛,可以到/release下载:Node.js,在blog后面加/release https://nodejs.org/en/blog/release/ 点击next翻页,跟上面同样的步骤

echarts柱状图可鼠标左击出现自定义弹框,右击隐藏弹框并阻止默认右击事件

每项x轴数据对应有两条柱图和一条阴影效果是学习其它博客得到的效果,这个是学习的原文链接:echarts两个合并柱体(普通柱状图象形柱图)共享一个柱体阴影 因为这次情况比较特殊,不仅需要自定义弹框内容,而且…

JAVA中YML:几个用法

项目有一些配置文件,ini、prop类型的配置文件都考虑过后,还是选择yml文件,如上图:xxconfig.yml。 要求: 1、允许实施人员手动配置 2、配置文件要能轻便的转化为一个JAVA对象 3、程序启动后,打印这些配置项&…

DQL语言学习(2024/3/5)one

1.基础查询: select 查询列表 from 表名; 查询列表可以是:①表中的字段、②常量值、③表达式、④函数 ①查询表中的单个字段,多个字段,所有字段 select *from 表名; ③查询表达式: select 100*98; ④…

【QT】QMainWindow介绍

QMainWindow Label:可以放静态/动态图片/链接 菜单栏工具栏浮动窗口和核心部件状态栏 Qdialog 模拟对话框非模拟对话框标准对话框和文件对话框 在创建文件时,路径一定不能有中文,否则会报错 双击下面的 Line Edit:只能显示一…

css使用

一、什么是CSS <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><style>div{color: red;}</style> </head> <body><div>Hello CSS</div></…

CSS的文本样式属性值,web前端开发规范

正文 介绍下半连接队列 服务器第一次接收到客户端的SYN后&#xff0c;会处于SYN-REVD阶段&#xff0c;此时双方还没有建立完全的连接&#xff0c; 服务器会把此种状态下请求连接放在一个队列里&#xff0c;我们把这种队列称为半连接队列 已经完成三次握手并建立连接&#xff…

第五篇:人工智能与机器学习技术VS创意创新(creative)--- 我为什么要翻译介绍美国人工智能科技巨头IAB公司?

【如无特殊说明&#xff0c;本文所有图片均来源于网络】 IAB平台&#xff0c;使命和功能 IAB成立于1996年&#xff0c;总部位于纽约市。 作为美国的人工智能科技巨头社会媒体和营销专业平台公司&#xff0c;互动广告局&#xff08;IAB- the Interactive Advertising Bureau&…

java SSM厂房管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM厂房管理系统是一套完善的web设计系统&#xff08;系统采用SSM框架进行设计开发&#xff0c;springspringMVCmybatis&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S…

PHP伪协议详解

PHP伪协议详解 一、前言1.什么是PHP伪协议&#xff1f;2.什么时候用PHP伪协议? 二、常见的php伪协议php://inputphp://filterzip://与bzip2://与zlib://协议data://phar:// 一、前言 1.什么是PHP伪协议&#xff1f; PHP伪协议是PHP自己支持的一种协议与封装协议&#xff0c;…

黑马微服务常见面试题

常见面试题 1.微服务篇 1.1.SpringCloud常见组件有哪些&#xff1f; 问题说明&#xff1a;这个题目主要考察对SpringCloud的组件基本了解 难易程度&#xff1a;简单 参考话术&#xff1a; SpringCloud包含的组件很多&#xff0c;有很多功能是重复的。其中最常用组件包括&…

hive实战项目:旅游集市数仓建设

旅游集市数仓建设 文章目录 旅游集市数仓建设为什么要设计数据分层&#xff1f;分层设计ODS&#xff08;Operational Data Store&#xff09;&#xff1a;数据运营层DW&#xff08;Data Warehouse&#xff09;&#xff1a;数据仓库层DWD&#xff08;Data Warehouse Detail&…

在亚马逊云科技上开启您的多机多卡分布式训练之旅

随着机器学习模型规模的扩大和数据量的增加&#xff0c;单个设备的计算能力和内存容量逐渐成为瓶颈。这导致训练过程变得缓慢且耗时长&#xff0c;限制了模型的进一步发展和改进。为了解决这个问题&#xff0c;分布式训练应运而生。它利用多个计算资源并行地执行计算任务&#…

我为什么选择大数据和技术人生两三事

程序员如何选择职业赛道&#xff1f; 程序员的职业赛道就像是一座迷宫&#xff0c;有前端的美丽花园&#xff0c;后端的黑暗洞穴&#xff0c;还有数据科学的神秘密室。你准备好探索这个充满挑战和机遇的迷宫了吗&#xff1f; 选择一个职业赛道&#xff0c;无外乎起点飘着兴趣&a…

计算机网络——24路由器组成

路由器组成 路由器的结构概况 高层面(非常简化的)通用路由器体系架构 路由&#xff1a;运行路由选择算法&#xff0f;协议 (RIP, OSPF, BGP) - 生成 路由表转发&#xff1a;从输入到输出链路交换数据报 - 根据路由表进行分组的转发 输入端口功能 分布式交换&#xff1a; 根…

AI大模型与小模型之间的“脱胎”与“反哺”(第四篇)

76. **动态领域适应网络&#xff08;Dynamic Domain Adaptation Networks, DDANs&#xff09;**&#xff1a; 创建能动态调整自身参数以适应新行业特性的网络结构&#xff0c;使得AI大模型能在不完全重新训练的情况下快速适应新的业务场景和环境变化。 77. **元学习中的元策略优…

MySQL--优化(索引)

MySQL–优化&#xff08;SQL语句执行慢&#xff0c;如何分析&#xff09; 定位慢查询SQL执行计划索引 存储引擎索引底层数据结构聚簇和非聚簇索引索引创建原则索引失效场景 SQL优化经验 索引 索引&#xff08;index&#xff09;是帮助 MySQL 高效获取数据的数据结构&#xff…