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将ip地址转换成整数的方法
Mar 17 Python
numpy自动生成数组详解
Dec 15 Python
Python3.6通过自带的urllib通过get或post方法请求url的实例
May 10 Python
tensorflow 输出权重到csv或txt的实例
Jun 14 Python
NLTK 3.2.4 环境搭建教程
Sep 19 Python
Pandas0.25来了千万别错过这10大好用的新功能
Aug 07 Python
Python嵌套函数,作用域与偏函数用法实例分析
Dec 26 Python
python数据处理——对pandas进行数据变频或插值实例
Apr 22 Python
Python3安装模块报错Microsoft Visual C++ 14.0 is required的解决方法
Jul 28 Python
python Paramiko使用示例
Sep 21 Python
详解pycharm自动import所需的库的操作方法
Nov 30 Python
Python docx库删除复制paragraph及行高设置图片插入示例
Jul 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
Zend Framework教程之Application用法实例详解
2016/03/14 PHP
CI框架简单邮件发送类实例
2016/05/18 PHP
wordpress自定义标签云与随机获取标签的方法详解
2019/03/22 PHP
详解AngularJS中自定义指令的使用
2015/06/17 Javascript
jquery获取img的src值的简单实例
2016/05/17 Javascript
JS+HTML5手机开发之滚动和惯性缓动实现方法分析
2016/06/12 Javascript
JS简单实现tab切换效果的多窗口显示功能
2016/09/07 Javascript
React Native预设占位placeholder的使用
2017/09/28 Javascript
Node层模拟实现multipart表单的文件上传示例
2018/01/02 Javascript
axios取消请求的实践记录分享
2018/09/26 Javascript
使用easyui从servlet传递json数据到前端页面的两种方法
2019/09/05 Javascript
JavaScrip如果基于url实现图片下载
2020/07/03 Javascript
NodeJS模块Buffer原理及使用方法解析
2020/11/11 NodeJs
JavaScript/TypeScript 实现并发请求控制的示例代码
2021/01/18 Javascript
[04:38]完美世界携手游戏风云打造 卡尔工作室饰品系统篇
2013/04/25 DOTA
[03:40]DOTA2亚洲邀请赛小组赛第二日 赛事回顾
2015/01/31 DOTA
python求众数问题实例
2014/09/26 Python
python查找目录下指定扩展名的文件实例
2015/04/01 Python
python常见数制转换实例分析
2015/05/09 Python
Django中针对基于类的视图添加csrf_exempt实例代码
2018/02/11 Python
Pandas 按索引合并数据集的方法
2018/11/15 Python
在pycharm中设置显示行数的方法
2019/01/16 Python
详解Python数据可视化编程 - 词云生成并保存(jieba+WordCloud)
2019/03/26 Python
python实现日志按天分割
2019/07/22 Python
基于pytorch的lstm参数使用详解
2020/01/14 Python
python3跳出一个循环的实例操作
2020/08/18 Python
pandas针对excel处理的实现
2021/01/15 Python
HTML5高仿微信聊天、微信聊天表情|对话框|编辑器功能
2018/04/23 HTML / CSS
div或img图片高度随宽度自适应的方法
2020/02/06 HTML / CSS
白兰氏健康Mall:BRAND’S
2017/11/13 全球购物
阿迪达斯荷兰官方网站:adidas荷兰
2018/03/16 全球购物
中专生自荐信
2013/10/12 职场文书
网吧消防安全制度
2014/01/28 职场文书
医学生毕业自我鉴定
2014/03/26 职场文书
MongoDB误操作后使用oplog恢复数据
2022/04/11 MongoDB
Python中生成随机数据安全性、多功能性、用途和速度方面进行比较
2022/04/14 Python