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 相关文章推荐
Python3使用SMTP发送带附件邮件
Jun 16 Python
python中的字符串内部换行方法
Jul 19 Python
Python rstrip()方法实例详解
Nov 11 Python
一百行python代码将图片转成字符画
Feb 19 Python
Python3简单实现串口通信的方法
Jun 12 Python
Ubuntu18.04中Python2.7与Python3.6环境切换
Jun 14 Python
Python字典的概念及常见应用实例详解
Oct 30 Python
python实现布隆过滤器及原理解析
Dec 08 Python
Pycharm最新激活码2019(推荐)
Dec 31 Python
tensorflow实现残差网络方式(mnist数据集)
May 26 Python
如何通过Python实现RabbitMQ延迟队列
Nov 28 Python
Pytorch数据读取之Dataset和DataLoader知识总结
May 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微信公众平台开发类实例
2015/04/01 PHP
JavaScript 事件的一些重要说明
2009/10/25 Javascript
javascript的parseFloat()方法精度问题探讨
2013/11/26 Javascript
js实现每日自动换一张图片的方法
2015/05/04 Javascript
javascript实现控制的多级下拉菜单
2015/07/05 Javascript
JS实现的最简Table选项卡效果
2015/10/14 Javascript
Jquery通过ajax请求NodeJS返回json数据实例
2016/11/08 NodeJs
js实现九宫格的随机颜色跳转
2017/02/19 Javascript
如何写好你的JavaScript【推荐】
2017/03/02 Javascript
BootStrap给table表格的每一行添加一个按钮事件
2017/09/07 Javascript
使用InstantClick.js让页面提前加载200ms
2017/09/12 Javascript
Vue 创建组件的两种方法小结(必看)
2018/02/23 Javascript
详解Vue取消eslint语法限制
2018/08/04 Javascript
Vue表单绑定的实例代码(单选按钮,选择框(单选时,多选时,用 v-for 渲染的动态选项)
2019/05/13 Javascript
Vue父组件如何获取子组件中的变量
2019/07/24 Javascript
vue实现前端分页完整代码
2020/06/17 Javascript
Python笔记(叁)继续学习
2012/10/24 Python
python抓取网页内容示例分享
2014/02/24 Python
使用Python来开发Markdown脚本扩展的实例分享
2016/03/04 Python
Pycharm 创建 Django admin 用户名和密码的实例
2018/05/30 Python
Python简易计算器制作方法代码详解
2019/10/31 Python
python Opencv计算图像相似度过程解析
2019/12/03 Python
Cython编译python为so 代码加密示例
2019/12/23 Python
Python pip配置国内源的方法
2020/02/14 Python
Python configparser模块操作代码实例
2020/06/08 Python
CSS3 实现弹跳的小球动画
2020/10/26 HTML / CSS
科颜氏加拿大官方网站: Kiehl’s加拿大
2016/08/16 全球购物
英国领先的新鲜松露和最好的松露产品供应商:TruffleHunter
2019/08/26 全球购物
weblogic面试题
2016/03/07 面试题
.net软件工程师面试题
2015/03/31 面试题
护士岗前培训自我评鉴
2014/02/28 职场文书
初中同学会活动方案
2014/08/22 职场文书
2015年度信用社工作总结
2015/05/04 职场文书
Java并发编程之详解CyclicBarrier线程同步
2021/06/23 Java/Android
Python jiaba库的使用详解
2021/11/23 Python
华为HarmonyOS3.0强在哪? 看看鸿蒙3.0这7个小功能
2023/01/09 数码科技