基于Python将图片转换成素描图片
程序员文章站
2022-07-07 11:13:38
...
今天刚好学了Python的数据分析中的nupmy库,就写了个把图片转换成素描图片的Python脚本。
首先你的有Python的运行环境,那么我们就可以开始写了,我们可以用Python自带的IDLE也可以,不过的自己下载nupmy库和Image;我比较推荐用的是anaconda,这是做科学计算数据分析之类的Python编译环境,这里面的库比较齐全,不用自己去下载。
(1)安装工具(使用anaconda的可以跳过)
pip install pillow
pip install numpy
(2)创建一个Python文件
将这段代码粘贴进去
from PIL import Image
import numpy as np
a = np.asarray(Image.open('a20.jpg').convert('L')).astype('float')
depth=10.
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_y=grad_y/A
uni_x=grad_x/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)
dy=np.cos(vec_el)*np.cos(vec_az)
dz=np.sin(vec_el)
b=255*(dx*uni_x+dy*uni_y+dz*uni_z)
b=b.clip(0,255)
im=Image.fromarray(b.astype('uint8'))
im.save('a8.jpg')
注意:代码里面第三行的a20.jpg是你想转换成素描图片的图片,最后一行的a8.jpg是程序执行完导出的素描照片。(特别注意:图片和Python脚本必须放在同一个文件夹,如果需要转换的文件不和Python脚本在同一个文件夹的话那么第三行的图片位置就必须用绝对路径。)
那么就是下面这个样子得了
这是原文件的图片:
这个是执行Python脚本文件后的图片: