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中xrange和range的区别
May 13 Python
Linux 下 Python 实现按任意键退出的实现方法
Sep 25 Python
详解MySQL数据类型int(M)中M的含义
Nov 20 Python
python生成词云的实现方法(推荐)
Jun 13 Python
python线程中同步锁详解
Apr 27 Python
利用Anaconda简单安装scrapy框架的方法
Jun 13 Python
详解pandas使用drop_duplicates去除DataFrame重复项参数
Aug 01 Python
python属于解释语言吗
Jun 11 Python
Python使用pickle进行序列化和反序列化的示例代码
Sep 22 Python
解决python3.x安装numpy成功但import出错的问题
Nov 17 Python
使用Python封装excel操作指南
Jan 29 Python
python入门学习关于for else的特殊特性讲解
Nov 20 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
ThinkPHP安装和设置
2015/07/27 PHP
JavaScript Archive Network 集合
2007/05/12 Javascript
javascript 新浪背投广告实现代码
2009/07/07 Javascript
js实现幻灯片效果(基于jquery插件)
2013/11/05 Javascript
JS 日期比较大小的简单实例
2014/01/13 Javascript
jquery Ajax 实现加载数据前动画效果的示例代码
2014/02/07 Javascript
js中把JSON字符串转换成JSON对象最好的方法
2014/03/21 Javascript
js简单的弹出框有关闭按钮
2014/05/05 Javascript
js超时调用setTimeout和间歇调用setInterval实例分析
2015/01/28 Javascript
javascript实现平滑无缝滚动
2020/08/09 Javascript
AngularJS的ng-repeat指令与scope继承关系实例详解
2017/01/21 Javascript
vue使用stompjs实现mqtt消息推送通知
2017/06/22 Javascript
jQuery解析json格式数据示例
2018/09/01 jQuery
微信小程序实现九宫格抽奖
2020/04/15 Javascript
Js数组扁平化实现方法代码总汇
2020/11/11 Javascript
[02:11]DOTA2上海特级锦标赛主赛事第二日RECAP
2016/03/04 DOTA
Windows下使Python2.x版本的解释器与3.x共存的方法
2015/10/25 Python
python3.4用循环往mysql5.7中写数据并输出的实现方法
2017/06/20 Python
python中学习K-Means和图片压缩
2017/11/20 Python
Python快速排序算法实例分析
2017/11/29 Python
python pandas dataframe 行列选择,切片操作方法
2018/04/10 Python
利用python实现简易版的贪吃蛇游戏(面向python小白)
2018/12/30 Python
Python正则表达式匹配日期与时间的方法
2019/07/07 Python
Python完成哈夫曼树编码过程及原理详解
2019/07/29 Python
学python安装的软件总结
2019/10/12 Python
python 实现二维字典的键值合并等函数
2019/12/06 Python
Django的ListView超详细用法(含分页paginate)
2020/05/21 Python
Python常驻任务实现接收外界参数代码解析
2020/07/21 Python
Python selenium爬取微信公众号文章代码详解
2020/08/12 Python
英国女装网上商店:I Saw It First
2018/10/18 全球购物
前处理组长岗位职责
2014/03/01 职场文书
新年抽奖获奖感言
2014/03/02 职场文书
主题实践活动总结
2014/05/08 职场文书
单位工作证明格式模板
2014/10/04 职场文书
2015年监理工作总结范文
2015/04/07 职场文书
nginx中proxy_pass各种用法详解
2021/11/07 Servers