女朋友嘲笑我没有艺术气息,我不服!!一气之下我用python画素描人像

Posted Jack·Kwok

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了女朋友嘲笑我没有艺术气息,我不服!!一气之下我用python画素描人像相关的知识,希望对你有一定的参考价值。

女朋友嘲笑我没有艺术气息,我不服!!一气之下我用python画素描人像

写在前面

都说5月20日是网络情人节,作为程序员的李伟,平时忙着敲代码,难得有时间可以陪女朋友,然而却收来女朋友的一条消息。。
在这里插入图片描述
伟哥这仅有的几根头发多少有点绿光啊哈哈!!!心里想,哪能受得了这种气!!不就是艺术气息吗?伟哥疯狂敲了30行代码,将女朋友的照片一处理,直接发过去了。生活真不容易啊,程序员也得学素描。

照片处理之前照片处理之后
在这里插入图片描述在这里插入图片描述

废话不多说,直接上代码。

代码实现

需要安装的库

PIL  用于对图片的灰度处理
numpy  用于数据分析

安装库命令

pip install PIL
pip install numpy

程序源码

其中:

  1. beforeUrl指定你要处理的照片,如:D:\\a.jpg
  2. afterUrl指定你处理完的照片的地址,如:D:\\b.jpg
from PIL import Image
import numpy as np

def makeSketch(beforeUrl,afterUrl):
    a = np.asarray(Image.open(beforeUrl).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(afterUrl)
    
    
if __name__ == '__main__':
    beforeUrl = r'D:\\1.jpg'
    afterUrl = r'D:\\2.jpg'
    makeSketch(beforeUrl,afterUrl)

项目参考github开源项目,项目地址:https://github.com/stormdony/python_demo/blob/master/Pic_to_sketch/test.py

总结

其实照片是我的女朋友哈哈,但我可没被绿!总之,不管是学艺术也好,写程序也好,都有各自的浪漫之处,虽然有时候呈现的形式不一样,但爱是一样的,祝各位5.20都有所爱之人在身边。

以上是关于女朋友嘲笑我没有艺术气息,我不服!!一气之下我用python画素描人像的主要内容,如果未能解决你的问题,请参考以下文章

嘲笑日常生活的单调?/Mark Jenkins

科普达人丨漫画图解 SGX 加密计算黑科技

深夜,我用python爬取了整个斗图网站,不服来斗

朋友当初选择测试行业大家都嘲笑他,如今月薪17K实力打我的脸...

redis拖后腿?我不服,来看这2W字面试题+答案+架构图,面试无忧

朋友做的秒杀系统被面试官嘲笑了! 大专毕业,每天都是CRUD,很难受!