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编写简单的画图板程序的示例教程
Dec 08 Python
python如何实现反向迭代
Mar 20 Python
如何使用Python的Requests包实现模拟登陆
Apr 27 Python
python自动化生成IOS的图标
Nov 13 Python
Python 中 function(#) (X)格式 和 (#)在Python3.*中的注意事项
Nov 30 Python
python实现微信自动回复机器人功能
Jul 11 Python
python Django里CSRF 对应策略详解
Aug 05 Python
sklearn和keras的数据切分与交叉验证的实例详解
Jun 19 Python
Python实现上下文管理器的方法
Aug 07 Python
Numpy数组的广播机制的实现
Nov 03 Python
Python 中 sorted 如何自定义比较逻辑
Feb 02 Python
Python中glob库实现文件名的匹配
Jun 18 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
让你的WINDOWS同时支持MYSQL4,MYSQL4.1,MYSQL5X
2006/12/06 PHP
php操作mysqli(示例代码)
2013/10/28 PHP
PHP实现一个简单url路由功能实例
2016/11/05 PHP
JavaScript数值数组排序示例分享
2014/05/27 Javascript
jQuery选择器源码解读(二):select方法
2015/03/31 Javascript
jquery+php随机生成红包金额数量代码分享
2015/08/27 Javascript
javascript正则表达式定义(语法)总结
2016/01/08 Javascript
利用Node.js制作爬取大众点评的爬虫
2016/09/22 Javascript
详解AngularJs HTTP响应拦截器实现登陆、权限校验
2017/04/11 Javascript
详解vue服务端渲染浏览器端缓存(keep-alive)
2018/10/12 Javascript
layui动态渲染生成select的option值方法
2019/09/23 Javascript
Vue项目打包部署到iis服务器的配置方法
2019/10/14 Javascript
Vue 集成 PDF.js 实现 PDF 预览和添加水印的步骤
2021/01/22 Vue.js
[01:59]深扒TI7聊天轮盘语音出处 1
2017/05/11 DOTA
python采用requests库模拟登录和抓取数据的简单示例
2014/07/05 Python
Python中Collection的使用小技巧
2014/08/18 Python
Python对象体系深入分析
2014/10/28 Python
Windows下Python的Django框架环境部署及应用编写入门
2016/03/10 Python
Python生成器以及应用实例解析
2018/02/08 Python
使用Python从零开始撸一个区块链
2018/03/14 Python
使用python Telnet远程登录执行程序的方法
2019/01/26 Python
python 在指定范围内随机生成不重复的n个数实例
2019/01/28 Python
Python使用Pandas库实现MySQL数据库的读写
2019/07/06 Python
深入浅析Python 中的sklearn模型选择
2019/10/12 Python
python3实现绘制二维点图
2019/12/04 Python
tensorflow:指定gpu 限制使用量百分比,设置最小使用量的实现
2020/02/06 Python
pyspark 随机森林的实现
2020/04/24 Python
基于PyTorch的permute和reshape/view的区别介绍
2020/06/18 Python
如何用Lucene索引数据库
2016/02/23 面试题
授权委托书(公民个人适用)
2014/09/19 职场文书
农村文化建设标语
2014/10/07 职场文书
嘉年华活动新闻稿
2015/07/17 职场文书
企业反腐倡廉心得体会
2015/08/15 职场文书
Python3中最常用的5种线程锁实例总结
2021/07/07 Python
Javascript设计模式之原型模式详细
2021/10/05 Javascript
Nginx防盗链与服务优化配置的全过程
2022/01/18 Servers