700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > pilt图像处理_Python用Pillow(PIL)进行简单的图像操作

pilt图像处理_Python用Pillow(PIL)进行简单的图像操作

时间:2021-05-21 13:26:00

相关推荐

pilt图像处理_Python用Pillow(PIL)进行简单的图像操作

安装

pip install pillow

Image类

可以说是(PIL:Python Image Library)里最重要的一个类了,该类存在于同名的模块中。可以通过以下几种方式实例化:从文件中读取图片,处理其他图片得到,或者直接创建一个图片。

使用open()函数可以从文件加载图像

例如:

图片1.png

from PIL import Image

img = Image.open("C:/Users/15338/Pictures/Saved Pictures/dog.jpg")

print(img.format, img.size[0], img.size, img.mode)

JPEG 353 (353, 409) RGB

format 这个属性标识了图像来源。如果图像不是从文件读取它的值就是None。size属性是一个二元tuple,包含width和height(宽度和高度,单位都是px)。 mode 属性定义了图像bands的数量和名称,以及像素类型和深度,“RGB” 表示真彩色图像。

图片的坐标表示

图像中左上角是坐标原点(0, 0),这和平常数学里的坐标系不太一样。这样定义的坐标系意味着,X轴是从左到右增长的,而Y轴是从上到下增长。

在Pillow中如何使用上述定义的坐标系表示一块矩形区域?许多函数或方法要求提供一个矩形元组参数。元组参数包含四个值,分别代表矩形四条边的距离X轴或者Y轴的距离。顺序是(左,顶,右,底)。右和底坐标稍微特殊,表示直到但不包括。可以理解为[左, 右)和[顶, 底)这样左闭右开的区间。比如(3, 2, 8, 9)就表示了横坐标范围[3, 7);纵坐标范围[2, 8)的矩形区域。

图片处理

图片裁剪

cropedImg = img.crop((100, 0, 300, 200))

cropedImg.save(r'C:/Users/15338/Pictures/Saved Pictures/cropdog.jpg')

cropedImg.show()

图片2.png

show()方法会调用系统默认图像查看软件,打开并显示。save()可保存处理后的图片,如果未经处理,保存后的图像占用的空间(字节数)一般也与原图像不一样,可能经过了压缩。

粘贴

img.paste(cropedImg, (0, 0))

img.show()

图片3.png

这如果之后还会用到原图的信息,由于信息被改变就很麻烦。所以paste前最好使用copy()复制一个副本,在此副本操作,不会影响到原图信息。

几何变换

img.rotate(90).save('C:/Users/15338/Pictures/Saved Pictures/rotate90.jpg')

逆时针旋转

图片4.png

img.transpose(Image.FLIP_LEFT_RIGHT).save(r'C:/Users/15338/Pictures/Saved Pictures/transepose_lr.jpg')

img.transpose(Image.FLIP_TOP_BOTTOM).save(r'C:/Users/15338/Pictures/Saved Pictures/transepose_tb.jpg')

图像的镜面翻转。transpose()函数可以实现,必须传入Image.FLIP_LEFT_RIGHT或者Image.FLIP_TOP_BOTTOM,第一个是水平翻转,第二个是垂直翻转。

图片5.png

颜色空间变换

convert()函数

gray = img.convert("L")

gray.show()

图片6.png

其他模块

Pillow使用ImageFilter可以简单做到图像的模糊、边缘增强、锐利、平滑等常见操作。(具体见百度)

ImageDraw,ImageFont

from PIL import Image, ImageDraw, ImageFont

img = Image.open(r'C:\Users\15338\Pictures\Saved Pictures\dog.jpg')

draw = ImageDraw.Draw(img)

text = 'HelloWorld'

Font = ImageFont.truetype("C:\Windows\Fonts\SHOWG.TTF",48)

draw.text([5,30],text,"red", font=Font)

img.save(r'C:\Users\15338\Pictures\Saved Pictures\dog.jpg')

图片7.png

生成随机字母验证码

from PIL import Image, ImageDraw, ImageFont, ImageFilter

import random

# 随机字母:

def rndChar():

return chr(random.randint(65, 90))

# 随机颜色1:

def rndColor():

return (random.randint(64, 255), random.randint(64, 255), random.randint(64, 255))

# 随机颜色2:

def rndColor2():

return (random.randint(32, 127), random.randint(32, 127), random.randint(32, 127))

# 240 x 60:

width = 60 * 4

height = 60

image = Image.new('RGB', (width, height), (255, 255, 255))

# 创建Font对象:

font = ImageFont.truetype('C:\Windows\Fonts\SHOWG.TTF', 36)

# 创建Draw对象:

draw = ImageDraw.Draw(image)

# 填充每个像素:

for x in range(width):

for y in range(height):

draw.point((x, y), fill=rndColor())

char = []

# 输出文字:

for t in range(4):

ch = rndChar()

char.append(ch)

draw.text((60 * t + 10, 10), ch, font=font, fill=rndColor2())

# 模糊:

image = image.filter(ImageFilter.BLUR)

image.save('D:\code.jpg', 'jpeg');

print(char)

================= RESTART: C:\Users\15338\Desktop\pillow.py =================

['C', 'M', 'N', 'T']

>>>

图片8.png

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。