zoukankan      html  css  js  c++  java
  • pillow与numpy实现图片素描化

    from PIL import Image
    import numpy as np
    
    #封装一个图像处理类
    class TestNumpy(object):
        def photo2paint(self,img_url):
            # 读取图片
            my_photo = np.asarray(Image.open(img_url).convert("L")).astype("float")
            # print(my_photo.shape)
            #设置灰度阈值(范围0~100)
            depth = 40
            # 将灰度系数映射到numpy
            grad = np.gradient(my_photo)
            #获取坐标
            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
            #设置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__":
        testnumpy = TestNumpy()
        testnumpy.photo2paint('./test_numpy.jpg')
        

  • 相关阅读:
    视图容器组件使用
    组件的学习
    伸展树
    二叉搜索树
    二叉树
    笛卡尔树
    二叉堆
    vim配置
    使用vim-pathogen 进行插件管理
    C/C++中的变量和静态变量
  • 原文地址:https://www.cnblogs.com/xcsg/p/10499579.html
Copyright © 2011-2022 走看看