首页 > 编程语言 > 详细

python科学计算库和绘图库的结合(原创)

时间:2019-03-06 13:16:27      阅读:205      评论:0      收藏:0      [点我收藏+]
# 导入绘图库
from PIL import Image
#导入科学计算库
import numpy as np


#封装一个图像处理工具类
class TestNumpy(object):

def photo2paint(self,img_url):
#读取图片,asarray()转矩阵 convert(‘L‘)转变成像素化 astype()转元素类型
my_photo = np.asarray(Image.open(img_url).convert(‘L‘)).astype(‘float‘)
print(my_photo)
print(my_photo.dtype)
print(my_photo.shape)
print(my_photo.size)
print(‘矩阵是 {} 维度‘.format(my_photo.ndim))
print(‘元素 {} 字节‘.format(my_photo.itemsize))

#设置灰度阈值 范围是(0-100)
depth = 10

#将灰度系数映射到numpy
grad = np.gradient(my_photo)

#获取坐标
grad_x,grad_y = grad

#分别处理,淡化灰度
grad_x = grad_x * depth / 300
grad_y = grad_y * depth / 300

#设置阿尔法值
#设置坐标范围
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

#设置x轴和y轴
dx = np.cos(vec_el) * np.cos(vec_az) #余玄
dy = np.cos(vec_el) * np.sin(vec_az)

#设置z轴
dz = np.sin(vec_el)

#设置byte值
b = 255 * (dx*uni_x+dy*uni_y+dz*uni_z)
#光源归一化
b = b.clip(0,255)

#声明图像类对象
im = Image.fromarray(b.astype(‘uint8‘))
#保存图像
im.save(‘./test_new.jpg‘)


if __name__ == "__main__":
tn = TestNumpy()
tn.photo2paint(‘./test_numpy.jpg‘)

python科学计算库和绘图库的结合(原创)

原文:https://www.cnblogs.com/justblue/p/10482403.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!