发布时间:2021-07-31 23:49:17编辑:run阅读(3110)
使用PIL进行图片处理,PIL提供了许多图像处理的函数,使用点变换来更改像素值对图像实现几何变换
PIL安装
pip install pillow
两幅图像叠加,通过将两个输入图像的像素相乘,可以将一个图像叠加到另一个图像的顶部
from PIL import Image from PIL.ImageChops import add, subtract, multiply im1 = Image.open(r'D:\image_processing\jpgs\cc.jpg') im2 = Image.open(r'D:\image_processing\jpgs\cc_bei.jpg').convert('RGB').resize((im1.width, im1.height)) multiply(im1, im2).show()
两幅图像相加,通过逐个对像素相加的方式,使用两个输入图像生成一个新的图像
from PIL import Image from PIL.ImageChops import add im1 = Image.open(r'D:\image_processing\jpgs\cc.jpg') im2 = Image.open(r'D:\image_processing\jpgs\cc_bei.jpg').convert('RGB').resize((im1.width, im1.height)) add(im1, im2).show()
计算两个图像之间的差值,图像差值可以用来检测两个图像之间的变化。
from PIL import Image from PIL.ImageChops import add, subtract, multiply, difference, screen import matplotlib.pylab as plt # 指定默认字体 plt.rcParams['font.sans-serif'] = ['KaiTi'] # 解决保存图像是负号'-'显示为方块的问题 plt.rcParams['axes.unicode_minus'] = False im1 = Image.open(r'D:\image_processing\jpgs\111.jpg').convert('RGB') im2 = Image.open(r'D:\image_processing\jpgs\222.jpg').convert('RGB') im = difference(im1, im2) im.save(r'D:\image_processing\jpgs\333.jpg') plt.subplot(221), plt.imshow(im1), plt.title('原图', size=20),plt.axis('off') plt.subplot(222), plt.imshow(im2), plt.title('缺口图', size=20),plt.axis('off') plt.subplot(223), plt.imshow(im), plt.title('差值图', size=20),plt.axis('off') plt.show()
减去两个图像和叠加两个图像负片,substract()函数的作用是:首先减去两个图像,然后将结果除以比例(默认是1.0),再加上偏移量(默认是0.0)
from PIL import Image from PIL.ImageChops import add, subtract im1 = Image.open(r'D:\image_processing\jpgs\c.jpg') im2 = Image.open(r'D:\image_processing\jpgs\cc_bei.jpg').convert('RGB').resize((im1.width, im1.height)) im3 = subtract(im1, im2, scale=1.5, offset=1).show()
screen()函数可用于将两个反转图像叠加在一起
from PIL import Image from PIL.ImageChops import add, subtract, multiply, difference, screen im1 = Image.open(r'D:\image_processing\jpgs\c.jpg') im2 = Image.open(r'D:\image_processing\jpgs\cc_bei.jpg').convert('RGB').resize((im1.width, im1.height)) im3 = screen(im1, im2).show()
47745
46236
37110
34627
29229
25886
24745
19863
19417
17909
5716°
6315°
5835°
5888°
6985°
5829°
5846°
6361°
6316°
7673°