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中的字符串替换操作示例
Jun 27 Python
Python 内置函数进制转换的用法(十进制转二进制、八进制、十六进制)
Apr 30 Python
python:print格式化输出到文件的实例
May 14 Python
python迭代dict的key和value的方法
Jul 06 Python
python输入整条数据分割存入数组的方法
Nov 13 Python
Python中三元表达式的几种写法介绍
Mar 04 Python
python-pyinstaller、打包后获取路径的实例
Jun 10 Python
ipad上运行python的方法步骤
Oct 12 Python
python matplotlib折线图样式实现过程
Nov 04 Python
Pycharm最新激活码2019(推荐)
Dec 31 Python
增大python字体的方法步骤
Jul 05 Python
Python读取文件夹下的所有文件实例代码
Apr 02 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 Sql Server连接失败问题及解决办法
2009/08/07 PHP
用 Composer构建自己的 PHP 框架之构建路由
2014/10/30 PHP
PHP实现QQ登录实例代码
2016/01/14 PHP
PHP获取ttf格式文件字体名的方法示例
2019/03/06 PHP
php实现大文件断点续传下载实例代码
2019/10/01 PHP
模仿jQuery each函数的链式调用
2009/07/22 Javascript
13个绚丽的Jquery 界面设计网站推荐
2010/09/28 Javascript
基于JQuery的浮动DIV显示提示信息并自动隐藏
2011/02/11 Javascript
举例详解JavaScript中Promise的使用
2015/06/24 Javascript
jQuery事件绑定用法详解
2016/09/08 Javascript
Vue2几种常见开局方式详解
2017/09/09 Javascript
vuejs项目打包之后的首屏加载优化及打包之后出现的问题
2018/04/01 Javascript
react 中父组件与子组件双向绑定问题
2019/05/20 Javascript
JavaScript 实现拖拽效果组件功能(兼容移动端)
2020/11/11 Javascript
Vue 实现一个简单的鼠标拖拽滚动效果插件
2020/12/10 Vue.js
[41:08]TNC vs VG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[04:50]2019DOTA2高校联赛秋季赛四强集锦
2019/12/27 DOTA
Python脚本实时处理log文件的方法
2016/11/21 Python
Python 列表(List) 的三种遍历方法实例 详解
2017/04/15 Python
解决Python requests库编码 socks5代理的问题
2018/05/07 Python
Pycharm导入Python包,模块的图文教程
2018/06/13 Python
Python实现的合并两个有序数组算法示例
2019/03/04 Python
python itchat给指定联系人发消息的方法
2019/06/11 Python
django 取消csrf限制的实例
2020/03/13 Python
python爬取2021猫眼票房字体加密实例
2021/02/19 Python
牦牛毛户外探险服装:Kora
2019/02/08 全球购物
Swanson中国官网:美国斯旺森健康产品公司
2021/03/01 全球购物
一套.net面试题及答案
2016/11/02 面试题
医学院毕业生自荐信
2013/11/08 职场文书
大学生毕业的自我鉴定
2013/11/13 职场文书
司机辞职报告范文
2014/01/20 职场文书
大学生个人自荐信样本
2014/03/02 职场文书
2015年施工员工作总结范文
2015/04/20 职场文书
如何用python清洗文件中的数据
2021/06/18 Python
JavaScript最完整的深浅拷贝实现方式详解
2022/02/28 Javascript
Python+Tkinter打造签名设计工具
2022/04/01 Python