Python实现手绘图效果实例分享


Posted in Python onJuly 22, 2020

首先我们来看看原图:

Python实现手绘图效果实例分享

接着我们来看看效果图:

Python实现手绘图效果实例分享

通过分析我们不难发现以下特征:

  • 主要颜色为黑白灰

  • 边界线条较重

  • 相同或相近色趋于白色

  • 略有光源效果

需要用到的库有:

  • numpy

  • PIL

代码实现:

import numpy as np
from PIL import Image


baseImg = Image.open("./img/myimg2.jpg").convert("L")  # 这里放置你要手绘的图片原图
a = np.array(baseImg).astype("float")

depth = 8.
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.sin(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)                      # 限制

img = Image.fromarray(b.astype("uint8")) # 重构图像
img.save("./toImg/myImage1.jpg")         # 保存图像

实例扩展:

from PIL import Image
import numpy as np

#为了便于文件的导入,可以使用相对路径,将文件和程序放在同一个文件夹下

vec_el=np.pi/2.2
vec_az=np.pi/4.
depth=10.
im=Image.open("HIT2.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_el)*np.cos(vec_az)
dy=np.cos(vec_el)*np.sin(vec_az)
dz=np.sin(vec_el)
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)
im2=Image.fromarray(a2.astype('uint8'))
im2.save('hit2-SH.jpg')

到此这篇关于Python实现手绘图效果实例分享的文章就介绍到这了,更多相关Python实现手绘图效果内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python数据结构之图的实现方法
Jul 08 Python
Python正则表达式非贪婪、多行匹配功能示例
Aug 08 Python
TensorFlow入门使用 tf.train.Saver()保存模型
Apr 24 Python
对python Tkinter Text的用法详解
Oct 11 Python
Python 文本文件内容批量抽取实例
Dec 10 Python
python3.6数独问题的解决
Jan 21 Python
Python直接赋值、浅拷贝与深度拷贝实例分析
Jun 18 Python
Django框架orM与自定义SQL语句混合事务控制操作
Jun 27 Python
python之拟合的实现
Jul 19 Python
Django中create和save方法的不同
Aug 13 Python
Python scrapy增量爬取实例及实现过程解析
Dec 24 Python
Pytorch提取模型特征向量保存至csv的例子
Jan 03 Python
Selenium及python实现滚动操作多种方法
Jul 21 #Python
如何在mac版pycharm选择python版本
Jul 21 #Python
python如何变换环境
Jul 21 #Python
零基础学Python之前需要学c语言吗
Jul 21 #Python
Python常驻任务实现接收外界参数代码解析
Jul 21 #Python
python中np是做什么的
Jul 21 #Python
从python读取sql的实例方法
Jul 21 #Python
You might like
php5 and xml示例
2006/11/22 PHP
PHP对MongoDB[NoSQL]数据库的操作
2013/03/01 PHP
mysql desc(DESCRIBE)命令实例讲解
2016/09/24 PHP
基于jquery的兼容各种浏览器的iframe自适应高度的脚本
2010/08/13 Javascript
Js 导出table内容到Excel的简单实例
2013/11/19 Javascript
利用JavaScript检测CPU使用率自己写的
2014/03/22 Javascript
js实现弹出窗口、页面变成灰色并不可操作的例子分享
2014/05/10 Javascript
js实现鼠标悬浮给图片加边框的方法
2015/01/30 Javascript
JavaScript模拟实现继承的方法
2015/03/30 Javascript
javascript每日必学之封装
2016/02/23 Javascript
基于Bootstrap实现Material Design风格表单插件 附源码下载
2016/04/18 Javascript
深入理解jquery跨域请求方法
2016/05/18 Javascript
jquery获取form表单input元素值的简单实例
2016/05/30 Javascript
jQuery学习笔记——jqGrid的使用记录(实现分页、搜索功能)
2016/11/09 Javascript
ES6新特性六:promise对象实例详解
2017/04/21 Javascript
vue.js使用代理和使用Nginx来解决跨域的问题
2018/02/03 Javascript
详解关于Vue版本不匹配问题(Vue packages version mismatch)
2018/09/17 Javascript
微信小程序实现两个页面传值的方法分析
2018/12/11 Javascript
ant design pro中可控的筛选和排序实例
2020/11/17 Javascript
Python学习小技巧之列表项的排序
2017/05/20 Python
超简单使用Python换脸实例
2019/03/27 Python
python tkinter实现界面切换的示例代码
2019/06/14 Python
详解Python3 pickle模块用法
2019/09/16 Python
python实现将json多行数据传入到mysql中使用
2019/12/31 Python
python实现人脸签到系统
2020/04/13 Python
Jupyter Notebook添加代码自动补全功能的实现
2021/01/07 Python
Hotels.com爱尔兰:全球酒店预订
2017/02/24 全球购物
在使用非全零作为空指针内部表达的机器上, NULL是如何定义
2014/11/09 面试题
线程问题:wait()方法是定义在哪个类里面
2015/07/07 面试题
一套Delphi的笔试题一
2016/02/14 面试题
护理专业自荐信
2013/12/03 职场文书
婚礼女方父母答谢词
2015/01/04 职场文书
员工年度工作总结2015
2015/05/18 职场文书
2015社区健康教育工作总结
2015/05/20 职场文书
HTML5来实现本地文件读取和写入的实现方法
2021/05/25 HTML / CSS
Android实现图片九宫格
2022/06/28 Java/Android