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 相关文章推荐
pydev使用wxpython找不到路径的解决方法
Feb 10 Python
python操作ssh实现服务器日志下载的方法
Jun 03 Python
Python 正则表达式实现计算器功能
Apr 29 Python
分数霸榜! python助你微信跳一跳拿高分
Jan 08 Python
python采集微信公众号文章
Dec 20 Python
Python 获取div标签中的文字实例
Dec 20 Python
完美解决ARIMA模型中plot_acf画不出图的问题
Jun 04 Python
给Django Admin添加验证码和多次登录尝试限制的实现
Jul 26 Python
Django用内置方法实现简单搜索功能的方法
Dec 18 Python
让文件路径提取变得更简单的Python Path库
May 27 Python
关于python中readlines函数的参数hint的相关知识总结
Jun 24 Python
Python&Matlab实现樱花的绘制
Apr 07 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
PHP中创建并处理图象
2006/10/09 PHP
PHP验证码函数代码(简单实用)
2013/09/29 PHP
php中session使用示例
2014/03/29 PHP
PHP编程中的常见漏洞和代码实例
2014/08/06 PHP
ThinkPHP中URL路径访问与模块控制器之间的关系
2014/08/23 PHP
jquery 多级下拉菜单核心代码
2010/05/21 Javascript
读取input:file的路径并显示本地图片的方法
2013/09/23 Javascript
javascript修改表格背景色实例代码分享
2013/12/10 Javascript
js浮点数精确计算(加、减、乘、除)
2013/12/26 Javascript
node.js 使用ejs模板引擎时后缀换成.html
2015/04/22 Javascript
js代码实现随机颜色的小方块
2015/07/30 Javascript
整理Javascript基础语法学习笔记
2015/11/29 Javascript
关于JS 预解释的相关理解
2016/06/28 Javascript
Bootstrap3 Grid system原理及应用详解
2016/09/30 Javascript
gulp加批处理(.bat)实现ng多应用一键自动化构建
2017/02/16 Javascript
vue-star评星组件开发实例
2018/03/01 Javascript
讲解vue-router之什么是动态路由
2018/05/28 Javascript
vuex实现的简单购物车功能示例
2019/02/13 Javascript
python操作日期和时间的方法
2014/03/11 Python
Python中的并发编程实例
2014/07/07 Python
教你用Python脚本快速为iOS10生成图标和截屏
2016/09/22 Python
python 写入csv乱码问题解决方法
2016/10/23 Python
Python基于list的append和pop方法实现堆栈与队列功能示例
2017/07/24 Python
使用keras和tensorflow保存为可部署的pb格式
2020/05/25 Python
使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二)
2020/10/12 Python
浅谈HTML5 defer和async的区别
2016/06/07 HTML / CSS
HTML5实现自带进度条和滑块滑杆效果
2018/04/17 HTML / CSS
牵手50新加坡:专为黄金岁月的单身人士而设的交友网站
2020/08/16 全球购物
夜大毕业生自我评价分享
2013/11/10 职场文书
国家税务局干部作风整顿整改措施
2014/09/18 职场文书
公司党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
工商局副局长个人对照检查材料
2014/09/25 职场文书
财务务虚会发言材料
2014/10/20 职场文书
工作作风懒散检讨书
2014/10/29 职场文书
小学见习报告
2015/06/23 职场文书
学校团代会开幕词
2016/03/04 职场文书