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字符转换
Sep 06 Python
python的类方法和静态方法
Dec 13 Python
CentOS7下python3.7.0安装教程
Jul 30 Python
对pandas的行列名更改与数据选择详解
Nov 12 Python
python列表使用实现名字管理系统
Jan 30 Python
Python Django 前后端分离 API的方法
Aug 28 Python
在python中创建指定大小的多维数组方式
Nov 28 Python
Python实现栈和队列的简单操作方法示例
Nov 29 Python
Python中six模块基础用法
Dec 08 Python
Python 多线程共享变量的实现示例
Apr 17 Python
python爬虫调度器用法及实例代码
Nov 30 Python
Pytest之测试命名规则的使用
Apr 16 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
Classes and Objects in PHP5-面向对象编程 [1]
2006/10/09 PHP
PHP安全防范技巧分享
2011/11/03 PHP
php遍历目录与文件夹的多种方法详解
2013/11/14 PHP
PHP直接修改表内容DataGrid功能实现代码
2015/09/24 PHP
完美解决php 导出excle的.csv格式的数据时乱码问题
2017/02/18 PHP
laravel5.4生成验证码的实例讲解
2017/08/05 PHP
利用WebBrowser彻底解决Web打印问题(包括后台打印)
2009/06/22 Javascript
Javascript 函数parseInt()转换时出现bug问题
2014/05/20 Javascript
JavaScript开发人员的10个关键习惯小结
2014/12/05 Javascript
JavaScript实现N皇后问题算法谜题解答
2014/12/29 Javascript
JavaScript跨浏览器获取页面中相同class节点的方法
2015/03/03 Javascript
深入理解Node.js的HTTP模块
2016/10/12 Javascript
深入研究React中setState源码
2017/11/17 Javascript
Angular 作用域scope的具体使用
2017/12/11 Javascript
解决iView中时间控件选择的时间总是少一天的问题
2018/03/15 Javascript
vue-cli2打包前和打包后的css前缀不一致的问题解决
2018/08/24 Javascript
详解vue中的computed的this指向问题
2018/12/05 Javascript
[00:35]可解锁地面特效
2018/12/20 DOTA
Python科学计算环境推荐——Anaconda
2014/06/30 Python
python实现机器人行走效果
2018/01/29 Python
Django 使用Ajax进行前后台交互的示例讲解
2018/05/28 Python
Python OpenCV处理图像之滤镜和图像运算
2018/07/10 Python
python判断计算机是否有网络连接的实例
2018/12/15 Python
Python实现九宫格式的朋友圈功能内附“马云”朋友圈
2019/05/07 Python
Python3 把一个列表按指定数目分成多个列表的方式
2019/12/25 Python
python爬虫模块URL管理器模块用法解析
2020/02/03 Python
matplotlib教程——强大的python作图工具库
2020/10/15 Python
详解Django中的FBV和CBV对比分析
2021/03/01 Python
CSS3 rgb and rgba(透明色)的使用详解
2020/09/25 HTML / CSS
伦敦最著名的老字号百货公司:Selfridges(塞尔福里奇百货)
2016/07/25 全球购物
聚美优品励志广告词
2014/03/14 职场文书
继承公证书样本
2014/04/04 职场文书
教师师德演讲稿
2014/05/06 职场文书
小学生春游活动方案
2014/08/20 职场文书
高中语文教学反思范文
2016/02/16 职场文书
《平移和旋转》教学反思
2016/02/19 职场文书