20 líneas de código Python para convertirte en un maestro del boceto

El origen del asunto:

Todavía faltan unos tres meses para el Año Nuevo chino. Lo peor cuando voy a casa es que mis padres me piden una cita a ciegas y me piden encontrar pareja. No, mi madre me invitó a un grupo de citas a ciegas. Yo Acaba de entrar en una cita a ciegas ¿Te imaginas? Mi madre introdujo mis fotos e información como un producto, y finalmente dijo: Vamos, saluden a todas las tías y bellezas.
inserte la descripción de la imagen aquí

¡Está bien! Yo estaba en mi juventud y a mi madre no le gustaba estar soltera, después de un cálido saludo, una joven con un avatar de dibujos animados me agregó, bueno, mi foto es atractiva.

inserte la descripción de la imagen aquí

Después de aceptar agregar a Miss Sister, conversé con Miss Sister y me preguntaron qué hago en el trabajo, ¿eh? Pensando en un ejemplo en Internet, no puedo pedirle que sepa que soy un granjero de código. Tengo un destello de inspiración. Soy pintor. El boceto se completó en cinco minutos y la joven quedó fascinada. ¡Para decir que soy como Tang Bohu reencarnado, esta jactancia puede llamarse una palabra!
inserte la descripción de la imagen aquí

Imagen original:

inserte la descripción de la imagen aquí

Después de la conversión:

inserte la descripción de la imagen aquí

código fuente:

from PIL import Image  #图像处理模块
import numpy as np
 
a = np.asarray(Image.open("这里是原图片的路径").convert('L')).astype('float')  
#将图像以灰度图的方式打开并将数据转为float存入np中
 
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)  #clip函数将区间外的数字剪除到区间边缘
 
im = Image.fromarray(b.astype('uint8')) #重构图像
im.save("这里是输出图片的路径")

Supongo que te gusta

Origin blog.csdn.net/weixin_57577264/article/details/121103860
Recomendado
Clasificación