Python图像处理PIL库的操作总结

1,947次阅读
没有评论

Python图像处理PIL库的操作总结

Matlab确实是一个强大的图像处理工具,不过对于一些简单的图像处理,如图像增强、图像锐化等等,调用python的第三方包PIL(Python Image Library)也可以解决问题,这里把python调用PIL做一些简单的图像处理操作总结下。

主要用到PIL库里的三个模块:Image、ImageDraw、ImageEnhance。

1.调整图像大小

import Image
img = Image.open("1.jpg")
new_img = img.resize((128,128),Image.BILINEAR)
new_img.save("new_img.jpg")

将1.jpg的大小转为128*128,Image.BILINEAR 指定采用双线性法对像素点插值。

两幅图对比(左:原图 右:resize后)

Python图像处理PIL库的操作总结

2.旋转图像

import Image
img = Image.open("1.jpg")
rot_img = img.rotate(45)
rot_img.save("rot_img.jpg")

把图像旋转45度。 

Python图像处理PIL库的操作总结

                                                                                               旋转45度

相关推荐:《Python入门教程》

3.格式转换

rot_img.save("con_img.bmp")

要把上面生成的 rot_img.jpg 转换成 bmp 图像,加这一行即可。如果不指定保存格式,PIL 将自动根据文件名后缀完成格式之间的转换。

4.统计直方图

import Image
img = Image.open("1.jpg") 
new_img = img.resize((128,128),Image.BILINEAR)
rot_img = new_img.rotate(45)
print (rot_img.histogram())

Image 类实例的 histogram()方法能够对直方图数据进行统计,并将结果做为一个列表(list)返回,将打印出所有 256 个灰度级像素点个数的统计值: 

[281271818162518222741243424222320333222202221212421273819181614111218171271013121412111020156171519712111411171013891091012810121671566158119108116812710161671351515,
13881310199131187181791310162271781410115139171414161582210161312651591491281198791612971476111618103161014141411911121611159105881211715820891114719139137881620216613811141491481415148142514162112101217211512341618323425333437536085977690150155156186142188205178231203217214193342218218272439935429278719352812729141322193033313042241722242337181921302022142041023161871415151712623114111315151417619121911137121512101110213118176151311591210161610656811714181111152107169112041112224158129101212141515191117613613691222131311181317814141014811171081110112615411171312103717101291113111514581481815108131651091011101410147121213714145186125131851310176132089141413211112171412815131512141918171927182331271627302834374540466460838711310912715319218723331536234635939292077651421832670242812157183014332333244341272922172919263022152421221011919151811161411157167201117101216109181214131112131314165135710101115918812998951315712814471012221591151181114129111912208416128151213121622111310151412121381316914181414151113912111199131212101091246761511111310121211129151391691214139141377147136179131081313619914914107913121711751023918915915227122110201515182018122111142134224244634855566287911061151641741831441591441561721901641772582292592432172881798463263163907941]

下面的操作加入 ImageDraw 模块,因为绘图操作是在图像上进行的,因此实例化 Draw 类的时候要把 Image对象 img 通过参数传递给 Draw 类的构造函数。

5.绘制直线

import Image,ImageDraw
img = Image.open("1.jpg")
draw = ImageDraw.Draw(img)
width,height = img.size  # 得到img的大小
draw.line(((0,0),(width-1,height-1)),fill=255)   # 对角线方向绘制直线
draw.line(((0,height-1),(width-1,0)),fill=255)
img.save("cross_line.jpg")

Python图像处理PIL库的操作总结

                                                                                               绘制对角线

6.绘制圆

import Image,ImageDraw
img = Image.open("1.jpg")
width,height = img.size
draw = ImageDraw.Draw(img)
draw.arc((0,0,width-1,height-1),0,360,fill=255)
img.save("circle.jpg")

(0,0,width-1,height-1)指定了所画弧线的界限;0,360 是所画弧线的起始角度和终止角度; fill=255 指定了所画线的颜色。

Python图像处理PIL库的操作总结

                                                                                                   绘制圆

下面的操作加入ImageEnhance 模块,这个模块提供了一个常用的图像增强工具箱。可以用来进行色彩增强、亮度增强、对比度增强、图像尖锐化等等增强操作。所有操作都有相同形式的接口——通过相应类的 enhance 方法实现。

7.亮度增强

import Image,ImageEnhance  
img = Image.open("1.jpg")  
brightness = ImageEnhance.Brightness(img)  
bright_img = brightness.enhance(2.0)  
bright_img.save("bright.jpg")
brightness = ImageEnhance.Brightness(img) 这一行把 img 传给 Brightness 类,得到一个 Brightness 类实例; 
bright_img = brightness.enhance(2.0)  这一行调用 brightness 实例的 enhance 方法,传入的参数指定将亮度增强 2 倍;

两幅图对比(左:原图  右:增强后)

Python图像处理PIL库的操作总结

8.图像锐化

import Image,ImageEnhance
img = Image.open("1.jpg")
sharpness = ImageEnhance.Sharpness(img)
sharp_img = sharpness.enhance(7.0)
sharp_img.save("sharp.jpg")

两幅图对比(左:原图 右:锐化后)

Python图像处理PIL库的操作总结

9.对比度增强

import Image,ImageEnhance
img = Image.open("1.jpg")
contrast = ImageEnhance.Contrast(img)
contrast_img = contrast.enhance(2.0)
contrast_img.save("contrast.jpg")

两幅图对比(左:原图 右:增强后)

Python图像处理PIL库的操作总结

神龙|纯净稳定代理IP免费测试>>>>>>>>天启|企业级代理IP免费测试>>>>>>>>IPIPGO|全球住宅代理IP免费测试

相关文章:

版权声明:程序人生2022-12-08发表,共计5311字。
新手QQ群:570568346,欢迎进群讨论 Python51学习