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实现SVN的目录周期性备份实例
Jul 17 Python
CentOS下使用yum安装python-pip失败的完美解决方法
Aug 16 Python
Python闭包之返回函数的函数用法示例
Jan 27 Python
python中强大的format函数实例详解
Dec 05 Python
总结python中pass的作用
Feb 27 Python
Python中print和return的作用及区别解析
May 05 Python
flask框架json数据的拿取和返回操作示例
Nov 28 Python
python图形开发GUI库wxpython使用方法详解
Feb 14 Python
Python 定义只读属性的实现方式
Mar 05 Python
Python ORM框架Peewee用法详解
Apr 29 Python
Python使用Pygame绘制时钟
Nov 29 Python
基于Python实现将列表数据生成折线图
Mar 23 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
11个PHPer必须要了解的编程规范
2014/09/22 PHP
PHP下载生成的csv文件及问题总结
2015/08/06 PHP
PHP入门教程之会话控制技巧(cookie与session)
2016/09/11 PHP
关于Anemometer图形化显示MySQL慢日志的工具搭建及使用的详细介绍
2020/07/13 PHP
070823更新的一个[消息提示框]组件 兼容ie7
2007/08/29 Javascript
使用javascript实现有效时间的控制,并显示将要过期的时间
2014/01/02 Javascript
jQuery简易图片放大特效示例代码
2014/06/09 Javascript
FF(火狐)浏览器无法执行window.close()解决方案
2014/11/13 Javascript
Node.js编程中客户端Session的使用详解
2015/06/23 Javascript
浅析JavaScript Array和string的转换(推荐)
2016/05/20 Javascript
node.js 中国天气预报 简单实现
2016/06/06 Javascript
Bootstrapvalidator校验、校验清除重置的实现代码(推荐)
2016/09/28 Javascript
js学习笔记之事件处理模型
2016/10/31 Javascript
JavaScript callback回调函数用法实例分析
2018/05/08 Javascript
promise和co搭配生成器函数方式解决js代码异步流程的比较
2018/05/25 Javascript
微信小程序—setTimeOut定时器的问题及解决
2019/07/26 Javascript
100行代码实现vue表单校验功能(小白自编)
2019/11/19 Javascript
JavaScript如何实现图片处理与合成
2020/05/29 Javascript
Python中使用异常处理来判断运行的操作系统平台方法
2015/01/22 Python
详解python中的hashlib模块的使用
2019/04/22 Python
django formset实现数据表的批量操作的示例代码
2019/12/06 Python
Python自定义聚合函数merge与transform区别详解
2020/05/26 Python
Python 按比例获取样本数据或执行任务的实现代码
2020/12/03 Python
详解CSS3伸缩布局盒模型Flex布局
2018/08/20 HTML / CSS
CSS3 实现图形下落动画效果
2020/11/13 HTML / CSS
HTML中使用SVG与SVG预定义形状元素介绍
2013/06/28 HTML / CSS
亿企通软件测试面试题
2012/04/10 面试题
暑假实习求职信范文
2013/09/22 职场文书
《植物妈妈有办法》教学反思
2014/02/25 职场文书
领导干部四风问题自我剖析材料
2014/09/25 职场文书
2015年艾滋病宣传活动总结
2015/03/27 职场文书
理想国读书笔记
2015/06/25 职场文书
2016年小学生清明节广播稿
2015/12/17 职场文书
Nginx快速入门教程
2021/03/31 Servers
Android Flutter实现图片滑动切换效果
2022/04/07 Java/Android
oracle设置密码复杂度及设置超时退出的功能
2022/06/28 Oracle