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查找目录下指定扩展名的文件实例
Apr 01 Python
编写Python小程序来统计测试脚本的关键字
Mar 12 Python
python实现应用程序在右键菜单中添加打开方式功能
Jan 09 Python
python正则分析nginx的访问日志
Jan 17 Python
老生常谈Python序列化和反序列化
Jun 28 Python
python装饰器-限制函数调用次数的方法(10s调用一次)
Apr 21 Python
获取python的list中含有重复值的index方法
Jun 27 Python
python退出命令是什么?详解python退出方法
Dec 10 Python
在Python中关于使用os模块遍历目录的实现方法
Jan 03 Python
浅谈django 模型类使用save()方法的好处与注意事项
Mar 28 Python
python获取淘宝服务器时间的代码示例
Apr 22 Python
python非标准时间的转换
Jul 25 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设计模式 Observer(观察者模式)
2011/06/26 PHP
PHP文件操作实现代码分享
2011/09/01 PHP
PHP延迟静态绑定示例分享
2014/06/22 PHP
php命令行用法入门实例教程
2014/10/27 PHP
PHP使用pcntl_fork实现多进程下载图片的方法
2014/12/16 PHP
详细解读PHP中接口的应用
2015/08/12 PHP
表单提交错误后返回内容消失问题的解决方法(PHP网站)
2015/10/20 PHP
WordPress开发中的get_post_custom()函数使用解析
2016/01/04 PHP
PHP pthreads v3下worker和pool的使用方法示例
2020/02/21 PHP
脚本吧 - 幻宇工作室用到js,超强推荐base.js
2006/12/23 Javascript
js实现select二级联动下拉菜单
2020/04/17 Javascript
Node.js的项目构建工具Grunt的安装与配置教程
2016/05/12 Javascript
脚本div实现拖放功能(两种)
2017/02/13 Javascript
jQuery插件FusionCharts实现的MSBar2D图效果示例【附demo源码】
2017/03/24 jQuery
Vue实现typeahead组件功能(非常靠谱)
2017/08/26 Javascript
在Vue项目中使用d3.js的实例代码
2018/05/01 Javascript
关于Layui Table隐藏列问题
2019/09/16 Javascript
[01:03:36]Ti4 循环赛第三日DK vs Titan
2014/07/12 DOTA
[59:07]海涛为你详解DOTA2新版本“贤哲秘契”
2014/11/22 DOTA
python使用cStringIO实现临时内存文件访问的方法
2015/03/26 Python
Python的Flask框架与数据库连接的教程
2015/04/20 Python
Python正规则表达式学习指南
2016/08/02 Python
JSON Web Tokens的实现原理
2017/04/02 Python
Python使用django框架实现多人在线匿名聊天的小程序
2017/11/29 Python
python实现指定文件夹下的指定文件移动到指定位置
2018/09/17 Python
搞清楚 Python traceback的具体使用方法
2019/05/13 Python
更新pip3与pyttsx3文字语音转换的实现方法
2019/08/08 Python
springboot配置文件抽离 git管理统 配置中心详解
2019/09/02 Python
利用CSS3参考手册和CSS3代码生成工具加速来学习网页制
2012/07/11 HTML / CSS
html5使用canvas画一条线
2014/12/15 HTML / CSS
捷克购买家具网站:JENA nábytek
2020/03/19 全球购物
医学检验专业个人求职信范文
2013/12/04 职场文书
暑期学习心得体会
2014/09/02 职场文书
2016廉洁教育心得体会
2016/01/20 职场文书
实例详解Python的进程,线程和协程
2022/03/13 Python
Win11显卡控制面板打开显卡设置方法
2022/04/20 数码科技