Python数据分析与展示 case1 图像的手绘效果

有关本篇文章的课件大家可以参考这个链接:https://www.icourse163.org/learn/BIT-1001870002?tid=1450349444#/learn/content?type=detail&id=1214619041&cid=1218405093
下面简单地介绍一下代码(其实就是给原来的代码写点注释,更能看懂一些)
首先是调用相应地包:

import numpy as np
from PIL import Image

导入你希望进行变换的图片,可以试着将导入后的图片输出一些,可以看到图片在Python中的保存形式:

a=np.asarray(Image.open('/Users/Desktop/WechatIMG33.jpeg').convert('L')).astype('float')#把图片转化成灰度模式的数组保存在a中
#print(a)

计算数组的梯度,并进行标准化处理:

depth=10.
grad=np.gradient(a)#计算图片矩阵的梯度
#print(grad)
grad_x,grad_y=grad#提取横向和纵向的梯度值
#print(grad_x,grad_y)
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)#限制数组取值,防止越界

储存图片:

im=Image.fromarray(b.astype('uint8'))#把数组b存成图片的形式
im.save('/Users/zhubowen/Desktop/1.jpg')

以上就是这个case的全部内容,应该更改一下导入和存储的路径就可以直接运行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值