• Python语言下图像的操作方法总结


    本章主要讲解 图像的读取方式、灰度化操作、图像转化为矩阵的方法

    假设 strImgPath是图像的路径, img对象将图片读入到内存中


    读取图像的第一种方式:skImage


    from skimage import io
    img=io.imread(strImgPath) # 读出的3D

    读取图像的第二种方式:matplotlib


    import matplotlib.image as mpimg #mpimg 用于读取图片
    import matplotlib.pyplot as plt # plt 用于显示图片
    img = mpimg.imread(strImgPath) # 读取图像
    plt.imshow(lena) # 显示图片
    plt.axis('off') # 不显示坐标轴
    plt.show()


    # 2、显示图片的第一个通道
    lena_1 = lena[:,:,0]
    plt.imshow('lena_1')
    plt.show()


    # 此时会发现显示的是热量图,不是我们预想的灰度图,可以添加 cmap 参数,有如下几种添加方法:
    #方法一
    plt.imshow('lena_1', cmap='Greys_r')
    plt.show()


    #方法二
    img = plt.imshow('lena_1')
    img.set_cmap('gray') # 'hot' 是热量图
    plt.show()


    #3、将 RGB 转为灰度图
    def rgb2gray(rgb):
        return np.dot(rgb[...,:3], [0.299, 0.587, 0.114])
    
    gray = rgb2gray(lena)    
    # 也可以用 plt.imshow(gray, cmap = plt.get_cmap('gray'))
    plt.imshow(gray, cmap='Greys_r')
    plt.axis('off')
    plt.show()


    第三种方式: PIL

    PIL模块提供有对图像操作的基本方法;

    Image.convert() 根据不同的参数可以把图片转化为不同的灰度图像,其中参数”L”是最常见的参数;

    转化为矩阵的方式可以用numpy模块的asarrsy() 也可以用numpy的matrix()

    from PIL import Image
    img=Image.open(strImgPath)
    img=np.asarray(strImgPath) # 转换为矩阵
    im = im.convert("L") # 灰度化
    data = im.getdata()# 获取灰度化以后的矩阵
    data = np.matrix(data,dtype='float')/255.0 # 对矩阵进行二值化PS 这种方式很low, 大津法效果更好,cv2的二值化就是用大津法




    第四种方式:opencv

    Cv2是opencv的python版,很多函数名称和操作方式和C++实现的opencv很相像,在此不赘述。

    import cv2
    img= = cv2.imread(strImgPath) # 读取图像
    img2gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)  # 将图片压缩为单通道的灰度图
  • 相关阅读:
    今天你们表现的真棒!!!
    多久没有给家里打过电话了?
    算法>并行算法 小强斋
    设计模式>单一职责原则 小强斋
    设计模式>里氏替换原则 小强斋
    设计模式>依赖倒置原则 小强斋
    设计模式>里氏替换原则 小强斋
    设计模式>接口隔离原则 小强斋
    设计模式>接口隔离原则 小强斋
    设计模式>单一职责原则 小强斋
  • 原文地址:https://www.cnblogs.com/greentomlee/p/9379499.html
Copyright © 2020-2023  润新知