#图片转化为手绘
from PIL import Image
import numpy as np
vec_e1 = np.pi / 2.2
vec_az = np.pi / 4
depth = 10
im = np.array(Image.open('C:/Users/Administrator/Desktop/img.jpg').convert('L'))
a = np.asarray(im).astype('float')
grad = np.gradient(a)
grad_x, grad_y = grad
grad_x = grad_x * depth / 100
grad_y = grad_y * depth / 100
dx = np.cos(vec_e1) * np.cos(vec_az)
dy = np.cos(vec_e1) * np.sin(vec_az)
dz = np.sin(vec_e1)
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)
im1 = Image.fromarray(a2.astype('uint8'))
im1.show()
原图:
手绘图: