python实现图片素描效果


Posted in Python onSeptember 26, 2020

代码如下:

from PIL import Image  #图像处理模块
import numpy as np

a = np.asarray(Image.open("这里是原图片的路径").convert('L')).astype('float')  
#将图像以灰度图的方式打开并将数据转为float存入np中

depth = 10.           # (0-100)
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.cos(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)  #clip函数将区间外的数字剪除到区间边缘

im = Image.fromarray(b.astype('uint8')) #重构图像
im.save("这里是输出图片的路径")

检验一下效果:

from PIL import Image  #图像处理模块
import numpy as np


# 将图像以灰度图的方式打开并将数据转为float存入np中
a = np.asarray(Image.open("D://Python//图片转素描//4.jpg").convert('L')).astype('float')

depth = 10.           # (0-100)
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.cos(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)  # clip函数将区间外的数字剪除到区间边缘

im = Image.fromarray(b.astype('uint8')) # 重构图像
im.save("D://Python//图片转素描//4_2.jpg")

原图:

python实现图片素描效果

转换后

python实现图片素描效果

但是不适合那些依赖光影变换效果的图片,比如我最爱的百里守约就很糟糕

python实现图片素描效果

python实现图片素描效果

以上就是python实现图片素描效果的详细内容,更多关于python 图片素描的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
教你安装python Django(图文)
Nov 04 Python
python实现12306火车票查询器
Apr 20 Python
python web.py开发httpserver解决跨域问题实例解析
Feb 12 Python
解决Pycharm运行时找不到文件的问题
Oct 29 Python
django框架事务处理小结【ORM 事务及raw sql,customize sql 事务处理】
Jun 27 Python
Django密码系统实现过程详解
Jul 19 Python
Python操作redis和mongoDB的方法
Dec 19 Python
python神经网络编程实现手写数字识别
May 27 Python
python不到50行代码完成了多张excel合并的实现示例
May 28 Python
简单了解Django项目应用创建过程
Jul 06 Python
如何将numpy二维数组中的np.nan值替换为指定的值
May 14 Python
手把手教你实现PyTorch的MNIST数据集
Jun 28 Python
Python:__eq__和__str__函数的使用示例
Sep 26 #Python
Kmeans均值聚类算法原理以及Python如何实现
Sep 26 #Python
python实现sm2和sm4国密(国家商用密码)算法的示例
Sep 26 #Python
Python爬取股票信息,并可视化数据的示例
Sep 26 #Python
如何利用python发送邮件
Sep 26 #Python
Python 测试框架unittest和pytest的优劣
Sep 26 #Python
浅析python函数式编程
Sep 26 #Python
You might like
谈谈新手如何学习PHP 默默经典版本
2009/08/04 PHP
谈谈你对Zend SAPIs(Zend SAPI Internals)的理解
2015/11/10 PHP
PHP7新特性之抽象语法树(AST)带来的变化详解
2018/07/17 PHP
php中错误处理操作实例分析
2019/08/23 PHP
JQuery UI的拖拽功能实现方法小结
2012/03/14 Javascript
JavaScript地图拖动功能SpryMap的简单实现
2013/07/17 Javascript
JS 实现列表与多选框选择附预览动画
2014/10/29 Javascript
Jquery操作Ajax方法小结
2015/11/29 Javascript
第六章之辅组类与响应式工具
2016/04/25 Javascript
JS跨域交互(jQuery+php)之jsonp使用心得
2016/07/01 Javascript
AngularJS基础 ng-click 指令示例代码
2016/08/01 Javascript
基于vue2.0+vuex的日期选择组件功能实现
2017/03/13 Javascript
详解angular用$sce服务来过滤HTML标签
2017/04/11 Javascript
nodejs+websocket实时聊天系统改进版
2017/05/18 NodeJs
vue+vue-validator 表单验证功能的实现代码
2017/11/13 Javascript
VueRouter导航守卫用法详解
2017/12/25 Javascript
node puppeteer(headless chrome)实现网站登录
2018/05/09 Javascript
微信小程序实现录音时的麦克风动画效果实例
2019/05/18 Javascript
微信小程序分包加载代码实现方法详解
2019/09/23 Javascript
js实现单元格拖拽效果
2020/02/10 Javascript
浅谈python socket函数中,send与sendall的区别与使用方法
2017/05/09 Python
R vs. Python 数据分析中谁与争锋?
2017/10/18 Python
对python中两种列表元素去重函数性能的比较方法
2018/06/29 Python
python实现控制COM口的示例
2019/07/03 Python
python Web flask 视图内容和模板实现代码
2019/08/23 Python
如何在python开发工具PyCharm中搭建QtPy环境(教程详解)
2020/02/04 Python
Pycharm和Idea支持的vim插件的方法
2020/02/21 Python
2014年秋季新学期寄语
2014/08/02 职场文书
老人节标语大全
2014/10/08 职场文书
合理化建议书
2015/02/04 职场文书
合作意向书怎么写
2019/06/24 职场文书
餐厅开业活动方案
2019/07/08 职场文书
演讲开头怎么书写?
2019/08/06 职场文书
小学记事作文之200字
2019/08/06 职场文书
pytorch DataLoader的num_workers参数与设置大小详解
2021/05/28 Python
openstack中的rpc远程调用的方法
2021/07/09 Python