首页 > 编程语言 >python-pillow图像处理

python-pillow图像处理

时间:2022-11-13 08:22:37浏览次数:40  
标签:python Image im1 图像处理 mode 图像 im2 pillow 255

一、图像处理

pillow是python imaging library的简称。常见的尺寸/格式/色彩/旋转等处理。引用是为from PIL import Image。PIL库安装目录在/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/PIL,该目录下有所有PIL下的函数。

1、图像处理基本知识

1)图像的RGB色彩模式

RGB三个颜色通过的变化和叠加得到各种颜色:例红色的RGB表示(255,0,0),绿色(0,255,0),黄色(255,255,0)

-R红色,取值范围0-255;

-G绿色,取值范围0-255;

-B蓝色,取值范围0-255;

2)像素阵列

数字图像可以看成一个整数阵列,阵列中的元素称为像素(Pixel),图像中的每个点都有一个像素,表示为(R,G,B)。 

3)RGBA色彩模式:RGBA格式除了r,g,b三个bands之外多了个alpha,不透明度。

可以通过open('文件名').convert(mode='RGB')选择打开色彩模式。

2、Image模块

Pillow库中,使用Image模块可以从文件中加载图像/处理其他图像/从scratch中创建图像;

1)打开和新建

open(fp,mode)  #打开文件,如果文件不存在,则返回IOError错误。fp打开文件的路径;mode可选,打开文件的方式,默认r;
new(mode,size,color=0)  #新建图像,mode图片模式;size图片尺寸,宽和高组成的元组;color默认颜色(黑色),可以是常有颜色名称'red',十六进制颜色'#F0099',元组(255,255,0);

Pillow库支持的常用图片模式信息:

 

 

【例1】使用Image打开一副图片

from PIL import Image
#打开图片
im=Image.open('/Users/姓名/Desktop/image03.png')
#显示图片
im.show()
#查看图片的信息
print('图像格式:',im.format)
print('图像大小,格式是(宽度,高度)',im.size)
print('图像宽度:',im.width,'图像高度:',im.height)
print('图像的格式:',im.mode)  #RGBA格式除了r,g,b三个bands之外多了个alpha,不透明度。
print('读取坐标在(100,100)处的像素信息:',im.getpixel((100,100)))

结果:

图像格式: PNG
图像大小,格式是(宽度,高度) (606, 194)
图像宽度: 606 图像高度: 194
图像的格式: RGBA
读取坐标在(100,100)处的像素信息: (123, 163, 241, 255)

 

2)混合

透明度混合处理:blend()实现透明度混合处理,语法:

blend(im1,im2,alpha) #im1,im2指参与混合的图片1/图片2,alpha混合透明度,取值0-1;混合过程为(im1*(1-alpha)+im2*alpha)

【例2】透明度混合图片

from PIL import Image
im1=Image.open('/Users/姓名/Desktop/image03.png').convert(mode='RGB')
im2=Image.new('RGB',im1.size,'red')  #新创建图像
#混合两幅图
Image.blend(im1, im2, alpha=0.5).show()

 

遮罩混合处理:composite()实现,语法:

composite(im1,im2.mask)  #im1/im2为混合处理图片,mask也为图像,mode可以为'1'/'L'/'RGBA',大小要和im1/im2一样。功能是使用mask来混合im1/im2图片,要求三张图片尺寸相同。
Image.split()方法用于将图像分成单独的波段。此方法从图像返回单个图像带的元组。分割“RGB”图像会创建三个新图像,每个图像都包含一个原始波段(红色,绿色,蓝色)的副本。

【例3】遮罩混合图片

from PIL import Image
im1=Image.open('/Users/姓名/Desktop/image03.png').convert(mode='RGB')
im2=Image.open('/Users/姓名/Desktop/image04.png').convert(mode='RGB')
im2=im2.resize(im1.size)
r,g,b=im2.split()
Image.composite(im2,im1,b).show()  #b.size返回(606, 194);b.mode返回L;

 


 

 



 

标签:python,Image,im1,图像处理,mode,图像,im2,pillow,255
From: https://www.cnblogs.com/min222/p/16882645.html

相关文章

  • HMM算法python实现
    基础介绍,后5项为基础5元素Q=['q0','q1','q2','q3']#状态集合States,共N种状态V=['v0','v1']#观测集合Observatio......
  • python监听串口双方收发消息内容
    使用说明使用VSPD建立一组虚拟串口查看MCU的端口号与波特率并修改python程序配置,运行即可看到双方收发的效果通过串口助手连接到虚拟串口并向其发送消息即Python显示......
  • python的垃圾回收机制
    python对内存回收引用几个概念计数器:当python程序运行时,会根据数据类型的不同找到相对应的结构体,根据结构体中的字段来进行创建相关的数据。然后将对象添加到refchain双向......
  • python学习笔记(一)
    一、前言要开始准备明年的数学建模比赛了,第一次弄这个比赛先从python学习开始吧,正好学了c语言,感觉大部分都差不多。 二、基础语法有三个非常基础的语法,据我所知c中并......
  • python的深浅拷贝
    在python中,对象的赋值就是简单的引用,a=[1,2,3],b=a,在上述情况下,a和b是一样的,他们指向同一片内存,b不过是a的别名,是引用,我们可以使用bisa去判断,返回Trueb......
  • Python_解决脚本执行过程中,文件被多次读取的问题
    今天在封装pandas过程中,发现封装脚本的执行耗时明显高于未封装的脚本复盘问题importtimeclassDemo:defmock_read_excel(self):print("读取文件")......
  • Python程序流程控制
    Python程序流程控制1.*程序流程概述在现实生活中,我们看到的流程是多种多样的,如汽车在道路上行驶,要顺序地沿道路前进,碰到交叉路口时,驾驶员就需要判断是转弯还是直行,在环......
  • 万万没想到,除了香农计划,Python3.11竟还有这么多性能提升!
    众所周知,Python3.11版本带来了较大的性能提升,但是,它具体在哪些方面上得到了优化呢?除了著名的“香农计划”外,它还包含哪些与性能相关的优化呢?本文将带你一探究竟!作者:Bes......
  • 30分钟学完Python基础语法
    30分钟学完Python基础语法,有一门面向对象语言的基础,30分钟足够看一遍Python的基础了。基础语法#缩进取代大括号#用换行取代分号,也可以使用分号,无所谓#输出print();#输......
  • python函数
    一、定义函数下面是一个打印问候语的简单函数,名为greet_user()1、向函数传递信息通过在这里添加username,就可让函数接受你给username指定的任何值。现在,这个函数要......