• Numpy实现图像变换


    实现:图像—————>多维数组————————>变换后的图像

    代码:

    
    import numpy as np
    from PIL import Image
    # 变换图像:一·读入图像。二·修改RGB值。三·保存为新的文件
    
    a = np.array(Image.open("C:/Users/dell/Desktop/image/洪崖洞.jpg").convert('L'))   # 把文件中的jpg变换为一个三维数组(数组含三个参数,分别为
    # 高度,宽度,每个像素的RGB值 ),convert:把彩色图片变灰白(变成二维数组,对于灰度值)
    # b = 255-a   # 取反变换
    c = (100/255)*a+150   # 区间变换
    # d = 255*(a/255)**2 # 像素平方
    im = Image.fromarray(c.astype('uint8'))   # 生产新的图像对象im
    im.save("C:/Users/dell/Desktop/image/洪崖洞2.jpg")    # 保存新的图像
    
    

    效果:

    • ps:依次是原图,bcd对应的变换

    升级版:达到手绘图片

    代码:

    
    from PIL import Image
    import numpy as np
    
    a = np.asarray(Image.open('C:/Users/dell/Desktop/image/洪崖洞.jpg').convert('L')).astype('float')
    depth = 10  # 预设深度值 0-100
    grad = np.gradient(a)  # 取图像灰度的梯度值
    grad_x, grad_y = grad  # 分别取横纵图像的梯度值
    grad_x = grad_x * depth / 100  # 根据深度调整x和y方向的梯度值
    grad_y = grad_y * depth / 100
    A = np.sqrt(grad_x ** 2 + grad_y ** 2 + 1.)  # 构造x和y轴梯度的三维归一化单位坐标系
    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)
    dz = np.sin(vec_el)
    b = 255 * (dx * uni_x + dy * uni_y + dz * uni_z)  # 光源归一化
    b = b.clip(0, 255)  # 避免数据越界,将灰度值裁剪为0-255区间
    
    im = Image.fromarray(b.astype('uint8'))  # 重构图像
    im.save('C:/Users/dell/Desktop/image/洪崖洞4.jpg')  # 生成图像
    
    

    效果:

  • 相关阅读:
    css 学习笔记 菜鸟
    html学习 菜鸟
    flask 杂记2
    logging 为全局的日志工具对象添加日志记录器
    flask 框架 转载:https://cloud.tencent.com/developer/article/1465968
    flask 框架 转载:https://cloud.tencent.com/developer/article/1465949
    flask blueprint
    [ZJOI2005]午餐
    [ZJOI2006]皇帝的烦恼
    数位dp小练
  • 原文地址:https://www.cnblogs.com/lushuang55/p/14319122.html
Copyright © 2020-2023  润新知