温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Python图像处理PIL库

发布时间:2020-09-21 11:46:03 阅读:202 作者:Leah 栏目:编程语言
Python开发者专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

这篇文章运用简单易懂的例子给大家介绍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度

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库

关于Python图像处理PIL库就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI

开发者交流群×