今天带大家来将GIF图片转化成一张好看的手绘图片
用的是PIL读取图片
和numpy处理图片
完整代码如下:
from PIL import Image
import numpy as np
vec_el = np.pi/2.2 #光源俯视角度
vec_az = np.pi/4. #光源方位角度
depth = 10.
im1 = Image.open("mayi_50.gif").convert('L')
a = np.asarray(im1).astype('float') # 可改为a = np.asarray(Image.open('TREE.jpg').convert('L')).astype(float)
grad = np.gradient(a) #或取图像的梯度值
grad_x,grad_y=grad #分别取纵横梯度值
grad_x = grad_x*depth/40. #调节得到想得到的效果
grad_y = grad_y*depth/40. #调节得到想得到的效果
dx = np.cos(vec_el)*np.cos(vec_az)#对光源X轴的影响
dy = np.cos(vec_el)*np.cos(vec_az)#对光源Y轴的影响
dz = np.sin(vec_el) #对光源Z轴的影响
A = np.sqrt(grad_x**2+grad_y**2+1.)
uni_x = grad_x/A
uni_y = grad_y/A
uni_z = 1./A
a2 = 255*(dx*uni_x+dy*uni_y+dz*uni_z) #光源归一化
a2 = a2.clip(0,255)
im2 = Image.fromarray(a2.astype('uint8')) #重新构造图片
im2.save('mayi_51.gif') #改名保存
效果图:
一起学习python,小白指导,教学分享记得私信我