ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2021-05-18 23:02:38  阅读:351  来源: 互联网

标签:python 一气之下 vec uni np 我用 grad beforeUrl 女朋友


女朋友嘲笑我没有艺术气息,我不服!!一气之下我用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,一气之下,vec,uni,np,我用,grad,beforeUrl,女朋友
来源: https://blog.csdn.net/PaperJack/article/details/117001711

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有