博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python PIL学习笔记(一)
阅读量:7004 次
发布时间:2019-06-27

本文共 1441 字,大约阅读时间需要 4 分钟。

hot3.png

一、图片的读取和格式保存

1、读取静态图

import Image, osim = Image.open('D:\\1.jpg')    #打开图片im.save('new.jpg')    #图像对象的保存print im.size, im.format, im.mode    #查看图片的各种属性

2、读取动态图

PIL默认载入图像的第一帧,可以利用seek和tell方法在各个帧之间移动。

im.seek(1)    # skip to the second frametry:    while 1:        im.seek(im.tell() + 1)    #当前帧 + 1except EOFError:    pass

二、图片的简单操作

1、切分

box = (100, 100, 200, 200)    #正方形对角点region = im.crop(box)    #在im中找到box大小的图片,并赋给新的图片对象

2、反转、粘贴操作

region = region.transpose(Image.ROTATE_180)    #反转im.paste(region, box)    #将region放到im的box位置

3、调整大小,旋转

out_size = img.resize((128, 128))#resize成128*128像素大小。out_rotate = img.rotate(45)#逆时针旋转45度

4、RGB

每一个RGB都是由三个通道的灰度图叠加的,所以pil提供了将这三个通道分离的方法。

这里如果只用split()会出现问题,应该先获得数据

im.getdata()r,g,b = im.split()    #分离三个通道#这里可以看一下分别的情况r.show()g.show()b.show()#融合三个通道out_merge = Image.merge("RGB", (r, g, b))    #这里可以互换r, g, b

5、转化灰度图像

out_L = im.convert('L')

6、融合图片

将两张图片大小相同的图片融合

Image.blend(im1, im2, alpha)    alpha参数大小决定im1----->im2,0时为im1,1时为im2。

im1 = Image.open('1.jpg')im2 = Image.open('jpg')#这里可以用上面的box切分图片或者用resize转换为相同大小out = Image.blend(im1, im2, 0.5)

三、常用滤镜

1、加强滤镜

import ImageFilterout_Detail = im.filter(ImageFilter.DETAIL)

或者直接用lambda表达式,增大像素点亮度

out_point = im.point(lambda i : i * 1.2)

还可以用ImageEnhance模块

import ImageEnhanceen = ImageEnhance.Contrast(im)out = en.enhance(1.5)

2、边缘化滤镜

im = im.filter(ImageFilter.EDGE_ENHANCE)

3、转化灰度图像

im = im.convert("L")

转载于:https://my.oschina.net/u/1458446/blog/217828

你可能感兴趣的文章
C#多线程应用:子线程更新主窗体控件的值(二)
查看>>
[LeetCode] Median of Two Sorted Arrays
查看>>
2000年互联网泡沫
查看>>
解决Tomcat 6.0 只支持 J2EE 1.2, 1.3, 1.4, and Java EE 5 Web modules
查看>>
C#模板引擎 DotLiquid
查看>>
libSVM介绍(二)
查看>>
Java Resource路径小结
查看>>
UITabBarController
查看>>
[Aaronyang] 写给自己的WPF4.5 笔记16[多线程]
查看>>
如果将一维数组编程一个字符串
查看>>
codeforces B. Ohana Cleans Up
查看>>
PHP 对象 “==” 与 “===”
查看>>
Atitit.播放系统规划新版本 and 最近版本回顾 v3 pbf.doc 1 版本11 (ing)41.1 规划h5本地缓存系列 41.2 Android版本app41.3 双类别系统,...
查看>>
jenkins2 hello pipeline
查看>>
10个调试技巧
查看>>
Atitit.常用的gc算法
查看>>
Cesium原理篇:4Web Workers剖析
查看>>
python 设计模式
查看>>
javaweb学习总结二十一(servlet开发入门、servlet生命周期以及调用过程)
查看>>
html传参数
查看>>