手绘图确实很好看,但对于手残党的敢敢,只能呵呵一笑,今天敢敢就用代码来实现手绘功能,把普通的图片转换为手绘图片。
效果
敢敢先上一张风景照。
现在呢,小X用python的程序对图片进行解析并转为话手绘类型。
是不是发现效果很不错呢?试了风景照后,小X想试试小X最爱的歌手杰伦的专辑封面照,不知道换成手绘后是什么样呢?emmm,对人像的转换感觉还有待提高。
代码
敢敢现在就直接上代码了,大家可以尝试各种自己喜欢的照片,通过python看看能得到什么样的手绘画。学过素描的同学觉得是自己画的好还是python画的好呢?
from PIL import Image
import numpy as np
#以下是图片的位置
a = np.asarray(Image.open(r'C:\Users\dylan\Desktop\1.png').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(r'C:\Users\dylan\Desktop\2.jpg')
感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。
一、Python所有方向的学习路线
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。
二、Python必备开发工具
工具都帮大家整理好了,安装就可直接上手!
三、最新Python学习笔记
当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
四、Python视频合集
观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
五、实战案例
纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
六、面试宝典
简历模板
若有侵权,请联系删除