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操作json数据的一个简单例子
Apr 17 Python
Python实现抓取网页生成Excel文件的方法示例
Aug 05 Python
Python cookbook(数据结构与算法)从序列中移除重复项且保持元素间顺序不变的方法
Mar 13 Python
Python3实现的字典遍历操作详解
Apr 18 Python
python随机数分布random测试
Aug 27 Python
python利用7z批量解压rar的实现
Aug 07 Python
Python爬取新型冠状病毒“谣言”新闻进行数据分析
Feb 16 Python
Python读取excel文件中带公式的值的实现
Apr 17 Python
python脚本和网页有何区别
Jul 02 Python
python中的错误如何查看
Jul 08 Python
python里反向传播算法详解
Nov 22 Python
Jupyter Notebook内使用argparse报错的解决方案
Jun 03 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生成静态文件的多种方法分享
2012/07/17 PHP
关于查看MSSQL 数据库 用户每个表 占用的空间大小
2013/06/21 PHP
基于php实现七牛抓取远程图片
2015/12/01 PHP
PHP5.5迭代生成器用法实例详解
2016/03/16 PHP
PHP图片添加水印功能示例小结
2016/10/03 PHP
php文件上传及下载附带显示文件及目录功能
2017/04/27 PHP
PHP使用PDO操作sqlite数据库应用案例
2019/03/07 PHP
php设计模式之工厂模式用法经典实例分析
2019/09/20 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
你需要知道的JavsScript可以做什么?
2007/06/29 Javascript
不使用中间变量,交换int型的 a, b两个变量的值。
2010/10/29 Javascript
Ext JS 4实现带week(星期)的日期选择控件(实战二)
2013/08/21 Javascript
js、css、img等浏览器缓存问题的2种解决方案
2013/10/23 Javascript
JavaScript的setAttribute兼容性问题解决方法
2013/11/11 Javascript
JS简单模拟触发按钮点击功能的方法
2015/11/30 Javascript
详解iframe与frame的区别
2016/01/13 Javascript
js实现Tab选项卡切换效果
2020/07/17 Javascript
Layui数据表格之获取表格中所有的数据方法
2018/08/20 Javascript
js实现橱窗展示效果
2020/01/11 Javascript
JS代码优化的8点建议
2020/02/04 Javascript
python爬虫_实现校园网自动重连脚本的教程
2018/04/22 Python
python读取文件名并改名字的实例
2019/01/07 Python
使用Python做定时任务及时了解互联网动态
2019/05/15 Python
在cmd中查看python的安装路径方法
2019/07/03 Python
python 批量添加的button 使用同一点击事件的方法
2019/07/17 Python
python 多进程队列数据处理详解
2019/12/23 Python
Python Opencv中用compareHist函数进行直方图比较对比图片
2020/04/07 Python
python3+selenium获取页面加载的所有静态资源文件链接操作
2020/05/04 Python
HTML5表单验证特性(知识点小结)
2020/03/10 HTML / CSS
幼儿园亲子活动方案
2014/01/29 职场文书
优秀班主任经验交流材料
2014/06/02 职场文书
科技活动周标语
2014/10/08 职场文书
庆祝国庆节标语
2014/10/09 职场文书
小学家长通知书评语
2014/12/31 职场文书
校运会班级霸气口号
2015/12/24 职场文书
社交电商模式的兴起:这些新的商机千万别错过
2019/07/26 职场文书