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数据结构与算法之图结构(Graph)实例分析
Sep 05 Python
Python实现生成随机数据插入mysql数据库的方法
Dec 25 Python
Python实现判断给定列表是否有重复元素的方法
Apr 11 Python
flask-socketio实现WebSocket的方法
Jul 31 Python
利用arcgis的python读取要素的X,Y方法
Dec 22 Python
关于pandas的离散化,面元划分详解
Nov 22 Python
Python 项目转化为so文件实例
Dec 23 Python
python ubplot使用方法解析
Jan 10 Python
基于Python计算圆周率pi代码实例
Mar 25 Python
Python 利用argparse模块实现脚本命令行参数解析
Dec 28 Python
详解Python自动化之文件自动化处理
Jun 21 Python
python基础之函数的定义和调用
Oct 24 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实现下载生成某链接快捷方式的解决方法
2013/05/07 PHP
19个超实用的PHP代码片段
2014/03/14 PHP
PHP图片处理之图片背景、画布操作
2014/11/19 PHP
PHP使用curl函数发送Post请求的注意事项
2016/11/26 PHP
检测input每次的输入是否合法遇到汉字输入就有问题
2012/05/23 Javascript
判断ie的两种简单方法
2013/08/12 Javascript
jQuery表格插件ParamQuery简单使用方法示例
2013/12/05 Javascript
jquery中的$(document).ready()使用小结
2014/02/14 Javascript
Angularjs基础知识及示例汇总
2015/01/22 Javascript
JS实现单行文字不间断向上滚动的方法
2015/01/29 Javascript
深入理解Java线程编程中的阻塞队列容器
2015/12/07 Javascript
JavaScript 函数模式详解及示例
2016/09/07 Javascript
原生Javascript插件开发实践
2017/01/09 Javascript
用Nodejs搭建服务器访问html、css、JS等静态资源文件
2017/04/28 NodeJs
axios进阶实践之利用最优雅的方式写ajax请求
2017/12/20 Javascript
vue的toast弹窗组件实例详解
2018/05/14 Javascript
转换layUI的数据表格中的日期格式方法
2019/09/19 Javascript
前端深入理解Typescript泛型概念
2020/03/09 Javascript
python实现linux下使用xcopy的方法
2015/06/28 Python
Python实现端口检测的方法
2018/07/24 Python
python石头剪刀布小游戏(三局两胜制)
2021/01/20 Python
python机器人运动范围问题的解答
2019/04/29 Python
python3中的eval和exec的区别与联系
2019/10/10 Python
使用Pytorch来拟合函数方式
2020/01/14 Python
python爬虫模块URL管理器模块用法解析
2020/02/03 Python
keras绘制acc和loss曲线图实例
2020/06/15 Python
python用Tkinter做自己的中文代码编辑器
2020/09/07 Python
俄罗斯眼镜网: optikaworld
2016/07/31 全球购物
计算机专业学生的自我评价
2013/12/15 职场文书
建筑结构施工专业推荐信
2014/02/21 职场文书
纺织工程专业推荐信
2014/09/08 职场文书
钓鱼岛事件感想
2015/08/11 职场文书
Nginx内网单机反向代理的实现
2021/11/07 Servers
Python使用OpenCV实现虚拟缩放效果
2022/02/28 Python
解决MySQL Varchar 类型尾部空格的问题
2022/04/06 MySQL
Pytorch中expand()的使用(扩展某个维度)
2022/07/15 Python