python图像处理

关于pillow库,可以提供p图像处理功能

image模块:可以从文件中加载图像,或者处理其他图像

python图像处理_第1张图片

使用image打开一幅图片

#导入 Image 模块
from PIL import Image
#打开图片
im=Image.open('修狗.png')
#显示图片
im.show()
#查看图片的信息
print('图像格式:',im.format)
print('图像大小,格式是(宽度,高度):',im.size)
print('图像宽度:',im.width,'图像高度:',im.height)
print('读取坐标在(100,100)处的像素的信息:',im.getpixel((100,100)))

关于混合处理有blend函数进行透明度的混合处理

其中代码如下‘

from PIL import Image
img1=Image.open('修狗1.jpg').convert(mode="RGB")
img2=Image.new("RGB",img1.size,"red")
# #混合两幅图
Image.blend(img1,img2,alpha=0.5).show()

笼罩混合处理

pillow中可以用函数composite()进行实现

代码如下

from PIL import Image
img1=Image.open('img1.jpg')
img2=Image.open('img2.jpg')
img2=img2.resize(img1.size)
r,g,b=img2.split()
Image.composite(img2,img1,b).show()

复制和缩放

复制:Image.copy()函数实现复制图片

缩放:用eval()函数  fun()函数计算图片像素并且进行返回

缩放图片 代码如下

from PIL import Image
img=Image.open('img2.jpg')
Image.eval(img,lambda i:i*2).show(

缩放成指定大小

from PIL import Image
img=Image.open('img2.jpg')
imgb=img.copy()
#缩放为指定大小(220,168)
imgb.thumbnail((220,168))
imgb.show()

粘贴和裁剪:函数paste()函数

代码如下

from PIL import Image
img=Image.open('修狗.png')
#复制图片
imgb=img.copy()
imgc=img.copy()
#剪切图片
region=imgb.crop((5,5,120,120))
#粘贴图片
imgc.paste(region,(30,30))
imgc.show()

图片旋转

pillow库中的rotate函数

代码如下

from PIL import Image
img=Image.open('修狗.png')
img.rotate(90).show()

格式转换covert()

对图片进行转换操作

from PIL import Image
#打开指定的图片
img1=Image.open('修狗.png')
img2=img1.copy()
#convert()
img_convert=img2.convert('CMYK')
# img_convert.show()
#transpose()
img_transpose=img2.transpose(Image.ROTATE_90)
img_transpose.show()

分离和合并 :函数split

from PIL import Image
img1=Image.open('修狗1.jpg')
img2=Image.open('修狗2.jpg')
img2=img2.resize(img1.size)
r1,g1,b1= img1.split()
r2,g2,b2= img2.split()
tmp=[r1,g2,b1]
img = Image.merge("RGB",tmp)
img.show()

滤镜:fillter函数

from PIL import Image,ImageFilter
#使用函数 filter()实现滤镜效果
img=Image.open('bjsxt.png')
b=img.filter(ImageFilter.GaussianBlur)
b.show()

ImageFilter 模块 实现滤镜功能,创建图片特效

比较常用的预定义滤镜如下:

BLUE:模糊

CONTOUR:轮廓

DETAIL:详情

EDGE_ENHANCE:边缘增强

EDGE_ENHANCE_MORE:边缘更多增强

EMBOSS:浮雕

FIND_EDGES:寻找边缘

SHARPEN:锐化

SMOOTH:平滑

而常用的自定义滤镜函数有如下

python图像处理_第2张图片

 

使用 ImageFilter 对指定图片实现滤镜特,其中主要用于制作特效合成图片等操作

相加函数 add()功能是对两张图片进行算数加法运算

代码如下

from PIL import Image,ImageFilter
#打开图片
imga=Image.open('img2.jpg')
w,h=imga.size
#创建图像区域
img_output=Image.new('RGB',(2*w,h))
#将创建的部分粘贴图片
img_output.paste(imga,(0,0))
#创建列表存储滤镜
fltrs=[]
fltrs.append(ImageFilter.EDGE_ENHANCE)#边缘强化滤镜
fltrs.append(ImageFilter.FIND_EDGES) #查找边缘滤镜
fltrs.append(ImageFilter.GaussianBlur)#高斯模糊滤镜
for fltr in fltrs:
    r=imga.filter(fltr)
    img_output.paste(r,(w,0))
    img_output.show()

ImageChops 模块:实现图片合成的模块,可以用来制作特效合成图片等操作,常用的内置函数如下

from PIL import Image
from PIL import ImageChops
#打开图片
imga=Image.open('修狗1.jpg')
imgb=Image.open('修狗2.jpg')
#对两张图片进行算术加法运算
ImageChops.add(imga,imgb,1,0).show()

减法函数 subtract()

代码如下

from PIL import Image
from PIL import ImageChops
#打开图片
imga=Image.open('修狗.jpg')
imgb=Image.open('修狗.jpg')

darker函数 变暗函数:功能是比较两个图片的像素,取两张图片中对应像素的较小值,所 以合成时两幅图像中对应位置的暗部分得到保留,而去除亮部分。

代码如下:

from PIL import Image
from PIL import ImageChops
#打开图片
imga=Image.open('修狗1.jpg')
imgb=Image.open('修狗2.jpg')
#使用变暗函数 darker()
ImageChops.darker(imga,imgb).show()

light函数与变暗函数相反 用法一样 我就不多赘述了

ImageEnhance 模快

内置的 ImageEnhance 模块中包含了多个用于增强图像效果的函数,主要用来调整图像 的色彩、对比度、亮度和清晰度等,感觉上和调整电视机的显示参数一样。在模块 ImageEnhance 中,所有的图片增强对象都实现一个通用的接口。这个接口只包 含如下一个方法。 方法 enhance()会返回一个增强的 Image 对象,参数 factor 是一个大于 0 的浮点数,1 表 示返回原始图片。
 

当在 Python 程序中使用模块 ImageEnhance 增强图像效果时,需要首先创建对应的增强 调整器,然后调用调整器输出函数,根据指定的增强系数(小于 1 表示减弱,大于 1 表示增 强,等于 1 表示原图不变)进行调整,最后输出调整后的图像。 在模块 ImageEnhance 中,常用的内置函数如下所示:

(1)ImageEnhance.Color(image ):功能是调整图像色彩平衡,相当于彩色电视机的 第 14 页 色彩调整,实现了上边提到的接口的 enhance 方法。

(2)ImageEnhance.Contrast(image ):功能是调整图像对比度,相当于彩色电视机的 对比度调整。

(3)ImageEnhance.Brightness(image ):功能是调整图像亮度。

(4)ImageEnhance.Sharpness(image ):功能是调整图像清晰度,用于锐化/钝化图片。 锐化操作的 factor 是 0~2 之间的一个浮点数。当 factor=0 时,返回一个模糊的图片对 象;当 factor=2 时,返回一个锐化的图片对象;当 factor=1 时,返回原始图片对象。

【示例】使用 ImageEnhance 实现图像色彩平

from PIL import Image
from PIL import ImageChops,ImageEnhance
#打开图片
imga=Image.open('blend1.jpg')
w,h=imga.size
#创建图像区域
img_output=Image.new('RGB',(2*w,h))
#将创建的部分粘贴图片
img_output.paste(imga,(0,0))
#调整图像色彩平衡
nhc=ImageEnhance.Color(imga)
for ratio in [0.6,1.8]:#减弱和增强两个系数
    b=nhc.enhance(ratio)#增强处理
    img_output.paste(b,(w,0))#粘贴修改后的图像
    img_output.show()

【示例】使用 ImageEnhancee 实现图像亮

from PIL import Image
from PIL import ImageChops,ImageEnhance
#打开图片
imga=Image.open('F24B2B9697459C88B9E0964AA84512C7.jpg')
w,h=imga.size
#创建图像区域
img_output=Image.new('RGB',(2*w,h))
#将创建的部分粘贴图片
img_output.paste(imga,(0,0))
#调整图像的亮度
nhb=ImageEnhance.Brightness(imga)
for ratio in [0.6,1.8]:#减弱和增强两个系数
    b=nhb.enhance(ratio)#增强处理
    img_output.paste(b,(w,0))#粘贴修改后的图像
    img_output.show()

效果如图所示

python图像处理_第3张图片

ImageDraw 模块

ImageDraw 模块实现了绘图功能。可以通过创建图片的方式来绘制 2D 图像;还可以在 原有的图片上进行绘图,已达到修饰图片或对图片进行注释的目的。 在 ImageDraw 模块绘图时需要首先创建一个 ImageDraw.Draw 对象,并且提供指向文件 的参数。然后引用创建的 Draw 对象方法进行绘图。最后保存或直接输出绘制的图像。

 可以进行绘制直线,圆弧,椭圆,弦,扇形,多边形,矩形,文字,点

from PIL import Image,ImageDraw
a=Image.new('RGB',(200,200),'white')
#新建一幅白色背景的图像
drw=ImageDraw.Draw(a)
drw.rectangle((50,50,150,150),outline='red')
drw.text((60,60),'First Draw...',fill='green')
a.show()

python图像处理_第4张图片

 

ImageFont 模块

ImageFont 的功能是实现对字体和字型的处理。比较常用的内置函数如下所示

(1)load():从指定的文件中加载一种字体,该函数返回对应的字体对象。

(2)load_path():和函数 load()一样,但是如果没有指定当前路径,就会从文件 sys.path 开 始查找指定的字体文件。语法格式如下:

(3)truetype():有两种定义格式。第 1 种格式的功能是加载一个 TrueType 或者 OpenType 字体文件,并且创建一个字体对象。在 Windows 系统中,如果指定的文件不存在,加载器 就会顺便看看 Windows 的字体目录下它是否存在

(4)load_default():功能是加载一种默认的字体。

(5)getsize():返回给定文本的宽度和高度,返回值是一个二元组。具体语法格式如下:

from PIL import Image,ImageDraw,ImageFont
im = Image.open("bjsxt.png")
draw = ImageDraw.Draw(im)
ft=ImageFont.truetype('SIMYOU.TTF',16)
draw.text((30,30),u'图像处理库 PIL',font=ft,fill='red')
ft=ImageFont.truetype('C:\\Windows\\Fonts\\SIMLI.TTF',20)
draw.text((30,80),u'图像处理库 PIL',font=ft,fill='blue')
ft=ImageFont.truetype('C:\\Windows\\Fonts\\STXINGKA.TTF',30)
draw.text((30,130),u'图像处理库 PIL',font=ft,fill='green')
im.show()

效果如下

python图像处理_第5张图片

 

你可能感兴趣的:(python,图像处理,计算机视觉,人工智能)