发布时间:2021-07-31 23:49:17编辑:run阅读(4158)
使用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()
51425
50899
41490
38263
32767
29687
28473
23402
23329
21661
1753°
2490°
2085°
2019°
2377°
2045°
2755°
4601°
4417°
3149°