python工具——pillow
PIL——Python Imaging Library是一个非常好用的图像处理库
在Python3中用Pillow代替PIL
安装
pip install pillow
eg:
原图
in.jpg
显示图片
from PIL import Image old_image = "D:\\python\\demo\\in.jpg" im = Image.open(old_image) im.show()
抓取屏幕
from PIL import ImageGrab im = ImageGrab.grab() im.save('D:\\python\\demo\\screen.jpg', 'jpeg') im.show()
模糊图片
from PIL import Image,ImageFilter old_image = "D:\\python\\demo\\in.jpg" im = Image.open(old_image) im2 = im.filter(ImageFilter.BLUR) im2.save('D:\\python\\demo\\filter.jpg', 'jpeg')
运行后生成
filter.jpg
生成手绘图
from PIL import Image import numpy as np # 原始图片路径 old_image = "D:\\python\\demo\\in.jpg" # 要生成的手绘图片路径 new_image = "D:\\python\\demo\\out.jpg" a = np.asarray(Image.open(old_image).convert('L')).astype('float') depth = 10. # (0-100) grad = np.gradient(a) #取图像灰度的梯度值 grad_x, grad_y = grad #分别取横纵图像梯度值 grad_x = grad_x*depth/100. grad_y = grad_y*depth/100. A = np.sqrt(grad_x**2 + grad_y**2 + 1.) uni_x = grad_x/A uni_y = grad_y/A uni_z = 1./A vec_el = np.pi/2.2 #光源的俯视角度,弧度值 vec_az = np.pi/4. #光源的方位角度,弧度值 dx = np.cos(vec_el)*np.cos(vec_az) #光源对x 轴的影响 dy = np.cos(vec_el)*np.sin(vec_az) #光源对y 轴的影响 dz = np.sin(vec_el) #光源对z 轴的影响 b = 255*(dx*uni_x + dy*uni_y + dz*uni_z) #光源归一化 b = b.clip(0,255) im = Image.fromarray(b.astype('uint8')) #重构图像 im.save(new_image) print('complete...')
运行后生成图片
out.jpg
说明:
使用numpy中的gradient()提取灰色图像的梯度
对梯度值进行操作,重构每个像素值
添加光源,重构图像
官网
https://pillow.readthedocs.io/en/latest/handbook/index.html