Python -- 图像的手绘风格
**
Python – 图像的手绘风格
**
今天在mooc上了解到python可以做出手绘风格的图片,感觉很惊奇,很想知道python对于图片是如何处理的,因此上网搜了一些博主的文章,总结了一下。
手绘效果图有一下几个特征:
1、图像中仅有黑白灰色
2、边界线条较重
3、相同或相近色彩趋于白色
4、略有光源效果
写这个程序会用到两个库,一个是PIL(Python Imaging Library,),还有一个是numpy。PIL(Python Image Library)是python的第三方图像处理库,但是由于其强大的功能与众多的使用人数,几乎已经被认为是python官方图像处理库了。PIL历史悠久,原来是只支持python2.x的版本的,后来出现了移植到python3的库pillow,pillow号称是“friendly fork for PIL”,其功能和PIL差不多,但是支持python3。
那么我们如何安装PIL呢,(其实是安装pillow啦,因为我的电脑是Windows10 版本,并且Python是3.7.2版本的)(PS:如果使用Pycharm的话直接在软件内下载即可)
首先>>>我们先打开命令行窗口输入pip install pillow即可(PS:由于版本更新的问题,可能有些人需要更新一下pip,命令行输入“python -m pip install --upgrade pip”即可)
同样的>>>我们安装numpy库
然后>>>我们可以在python IDLE中测试一下是否安装成功
安装成功>>>我们可以继续进行程序的编写了,下面展出代码:
from PIL import Image
import numpy as npa = np.asarray(Image.open("hit_example.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./Avec_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)im = Image.fromarray(b.astype('uint8')) #重构图像
im.save('hit_exampleHD.jpg')
print("图像手绘化已完成")
其中
np.asarray(Image.open(’./beijing.jpg’).convert(‘L’)).astype(‘float’)意思是将图像以灰度图的方式打开并将数据转为float存入np中.
np.gradient(a) 是求a的梯度,返回的是二元信息,可分别赋值给grad_x,grad_y,将梯度按照深度等级计算并且归一化处理。
建立光源效果
建立模型后可分析出np.cos(vec_el)为单位光线在地平面上的投影长度,dx,dy,dz是光源对x/y/z三方向的影响程度.
将梯度归一化
构造x和y轴梯度的三维归一化单位坐标系 A = np.sqrt(grad_x2 + grad_y2 + 1)
梯度和光源相互作用,将梯度转化为灰度 b = 255*(dxuni_x + dyuni_y + dz*uni_z)
之前为了处理方便,我们梯度值调为0-1之间,梯度与光源相互作用后,还原为0-255,但仍然可能会有部分溢出,因此,为避免越界,将生成的灰度值剪裁至0-255区间b = b.clip(0,255)
最后就能得到手绘效果的图啦~
最后贴图:
Python -- 图像的手绘风格相关推荐
- Python使用matplotlib绘制卡通、手绘风格的图像
博主已经开通微信公众号啦,欢迎关注哈! 入门数据科学这一行以来,陆陆续续学到了很多专业领域的知识,数据可视化就是其中的一部分,在Python中提供数据可视化的工具也不少,但是最为著名的莫过于matpl ...
- python数据分析与展示--图像的手绘效果
目录 一.图像的数组表示 1.图像的RGB色彩模式 2.PIL库 二.图像变换 1.image转换成array 2.array转换成image 三.图像的手绘效果 1.实例介绍 2.编程实例 一 ...
- python可视化包选哪个_给大家介绍一个很酷的 Python 手绘风格可视化神包:cutecharts...
https://github.com/chenjiandongx/cutecharts 今天,给大家介绍一个很酷的 Python 手绘风格可视化神包:cutecharts.和 Matplotlib . ...
- Python 采集87个手绘风格PPT模板
源码下载链接:ppt.rar - 蓝奏云 PPT下载链接:https://pan.baidu.com/s/1HUAEe_-4IEV6ttOKC_VPuA?pwd=96px 提取码:96px 采集的参 ...
- matlab实现手绘风格(简笔画风格、漫画风格)的曲线绘图
matlab实现手绘风格(简笔画风格.漫画风格)的曲线绘图 matlab实现手绘风格(简笔画风格.漫画风格)的曲线绘图 1 网站上的实现方法 2 自己的实现方法 matlab实现手绘风格(简笔画风格. ...
- Python彩色图片转手绘风格
Python彩色图片转手绘风格 from PIL import Image # 图像的手绘 """黑白风格边界的位置比较重相同或相近色彩趋近于白色咯有光源效果 " ...
- 利用Numpy+PIL读取图像实现手绘效果
读取图像+简单处理 import numpy as np from PIL import Imagepath = "" #图像路径im = np.array(Image.open( ...
- Python实现图片手绘效果
Python实现图片手绘效果 在图像处理领域中,手绘效果是一个非常有趣的特效.在这篇文章中,我们将讨论如何使用Python和PIL库来实现图片的手绘效果. 准备工作 在开始之前,我们需要安装PIL库. ...
- 持续更新-ppt绘图参考-手绘风格+win10录屏
在线 手绘风格,在线生成:自己手画 https://excalidraw.com/ 手绘风格的流程图.时序图.甘特图 https://jeasonstudio.github.io/oxygen-dem ...
最新文章
- pip install 豆瓣源、清华源、阿里源、中国科技大学源
- 加载vue文件步骤_无法在重新加载时读取vue文件
- 华为天才少年榜单遭受嘲讽:感觉水平一般,有点哗众取宠!
- 《Java工程师修炼之道》内容概览
- 测试ESP32S基本模块的功能,并验证是否可以应用在AI智能车竞赛检测激光信号中
- Map的Value值转换为List集合
- linux c之出现warning: implicit declaration of function ‘exit’ [-Wimplicit-function-declaration]这个问题
- 团队作业_1_博客1(分工理解)
- 动态网页开发技术(二):Servlet
- 简单的读取文件和写入文件
- 2020 高考大数据下,数据可视化告诉你如何填志愿、选学校?
- win2003 搭建文件服务器,用win2003+server搭建安全文件服务器.doc
- 谷歌探月大赛确定29支队伍 最高奖金2000万美元
- Selenium的使用:WEB功能测试
- 【转】一个时代的剪影----汉
- 锦天科技被盛大收购 23岁创始人成亿万富翁
- 您的自动化测试糟透了
- 读书笔记--Java核心技术--高级特征
- Redis使用说明书(Windows)
- 组播路由协议——PIM基本概念