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教程之用py2exe将PY文件转成EXE文件
Jun 12 Python
Python使用tablib生成excel文件的简单实现方法
Mar 16 Python
Python制作Windows系统服务
Mar 25 Python
python中requests和https使用简单示例
Jan 18 Python
python 获取文件下所有文件或目录os.walk()的实例
Apr 23 Python
Python实现FM算法解析
Jun 18 Python
用Python配平化学方程式的方法
Jul 20 Python
Python Web框架之Django框架Form组件用法详解
Aug 16 Python
带你学习Python如何实现回归树模型
Jul 16 Python
Python实战之实现康威生命游戏
Apr 26 Python
Python自动操作神器PyAutoGUI的使用教程
Jun 16 Python
Python sklearn分类决策树方法详解
Sep 23 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+mysql事务rollback&commit示例
2010/02/08 PHP
PHP文件读写操作之文件写入代码
2011/01/13 PHP
php中限制ip段访问、禁止ip提交表单的代码分享
2014/08/22 PHP
PHP curl使用实例
2015/07/02 PHP
Discuz!X中SESSION机制实例详解
2015/09/23 PHP
thinkPHP实现签到功能的方法
2017/03/15 PHP
PHP发送邮件确认验证注册功能示例【修改别人邮件类】
2019/11/09 PHP
jQuery ctrl+Enter shift+Enter实现代码
2010/02/07 Javascript
JS拖动技术 关于setCapture使用
2010/12/09 Javascript
查找Oracle高消耗语句的方法
2014/03/22 Javascript
MVC+jQuery.Ajax异步实现增删改查和分页
2020/12/22 Javascript
javascript之with的使用(阿里云、淘宝使用代码分析)
2016/10/11 Javascript
jQuery插件DataTable使用方法详解(.Net平台)
2016/12/22 Javascript
jQuery使用正则表达式替换dom元素标签用法示例
2017/01/16 Javascript
JS实现的添加弹出层并完成锁屏操作示例
2017/04/07 Javascript
layer弹出层全屏及关闭方法
2018/08/17 Javascript
js中null与空字符串""的区别讲解
2019/01/17 Javascript
详解vue-cli+element-ui树形表格(多级表格折腾小计)
2019/04/17 Javascript
element实现合并单元格通用方法
2019/11/13 Javascript
Python使用htpasswd实现基本认证授权的例子
2014/06/10 Python
python使用分治法实现求解最大值的方法
2015/05/12 Python
django与小程序实现登录验证功能的示例代码
2019/02/19 Python
如何使用python实现模拟鼠标点击
2020/01/06 Python
python读取yaml文件后修改写入本地实例
2020/04/27 Python
python利用os模块编写文件复制功能——copy()函数用法
2020/07/13 Python
教你一分钟在win10终端成功安装Pytorch的方法步骤
2021/01/28 Python
python中子类与父类的关系基础知识点
2021/02/02 Python
表单button的outline在firefox浏览器下的问题
2012/12/24 HTML / CSS
欧舒丹比利时官网:L’OCCITANE比利时
2017/04/25 全球购物
美国Max仓库:Max Warehouse
2020/05/31 全球购物
旅游项目开发策划书
2014/01/18 职场文书
优秀志愿者事迹材料
2014/02/03 职场文书
培训协议书范本
2014/04/22 职场文书
2015年干部教育培训工作总结
2015/05/15 职场文书
如何用vue实现网页截图你知道吗
2021/11/17 Vue.js
微软Win11 全新照片应用面向 Dev预览版推出 新版本上手体验图集
2022/09/23 数码科技