• Skimage=scikit-image SciKit 包的模块(转载)


    图片信息获取

    from skimage import io, data
    img = data.chelsea()
    io.imshow(img)
    print(type(img)) #显示类型
    print(img.shape) #显示尺寸
    print(img.shape[0]) #图片高度
    print(img.shape[1]) #图片宽度
    print(img.shape[2]) #图片通道数
    print(img.size) #显示总像素个数
    print(img.max()) #最大像素值
    print(img.min()) #最小像素值
    print(img.mean()) #像素平均值
    print(img[0][0])#图像的像素值

    从外部读取照片

    读取单张彩色rgb图片,使用skimage.io.imread(fname)函数,带一个参数,表示需要读取的文件路径。

    显示图片使用skimage.io.imshow(arr)函数,带一个参数,表示需要显示的arr数组(读取的图片以numpy数组形式计算)。

    from skimage import io
    img=io.imread('d:/dog.jpg')
    io.imshow(img)

    读取单张灰度图片,使用skimage.io.imread(fname,as_grey=True)函数,第一个参数为图片路径,第二个参数为as_grey, bool型值,默认为False

    from skimage import io
    img=io.imread('d:/dog.jpg',as_grey=True)
    io.imshow(img)

    程序自带图片

    skimage程序自带了一些示例图片,如果我们不想从外部读取图片,就可以直接使用这些示例图片:

    astronaut     航员图片      coffee     一杯咖啡图片   
    lena          lena美女图片   camera   拿相机的人图片   
    coins           硬币图片     moon    月亮图片
    checkerboard   棋盘图片       horse   马图片   
    page   书页图片              chelsea   小猫图片     
    hubble_deep_field    星空图片   text   文字图片
    clock    时钟图片   immunohistochemistry   结肠图片
    

    显示这些图片可用如下代码,不带任何参数

    from skimage import io, data
    img=data.lena()
    io.imshow(img)

    图片名对应的就是函数名,如camera图片对应的函数名为camera(). 这些示例图片存放在skimage的安装目录下面,路径名称为data_dir,我们可以将这个路径打印出来看看

    from skimage import data_dir
    print(data_dir)

    保存图片

    使用io模块的imsave(fname,arr)函数来实现。第一个参数表示保存的路径和名称,第二个参数表示需要保存的数组变量。

    from skimage import io,data
    img=data.chelsea()
    io.imshow(img)
    io.imsave('d:/cat.jpg',img)

    保存图片的同时也起到了转换格式的作用。如果读取时图片格式为jpg图片,保存为png格式,则将图片从jpg图片转换为png图片并保存。

    图片形变与缩放——transform

    图像的形变与缩放,使用的是skimage的transform模块,函数比较多,功能齐全。
    1、改变图片尺寸resize
    函数格式为:

    skimage.transform.resize(image, output_shape)

    image: 需要改变尺寸的图片
    output_shape: 新的图片尺寸

    from skimage import transform,data
    import matplotlib.pyplot as plt
    img = data.camera()
    dst=transform.resize(img, (80, 60))
    plt.figure('resize')
    plt.subplot(121)
    plt.title('before resize')
    plt.imshow(img,plt.cm.gray)
    plt.subplot(122)
    plt.title('before resize')
    plt.imshow(dst,plt.cm.gray)
    plt.show()

    将camera图片由原来的512x512大小,变成了80x60大小。

    2、按比例缩放rescale
    函数格式为:

    skimage.transform.rescale(image, scale[, ...])

    scale参数可以是单个float数,表示缩放的倍数,也可以是一个float型的tuple,如[0.2,0.5],表示将行列数分开进行缩放

    from skimage import transform,data
    img = data.camera()
    print(img.shape) #图片原始大小 
    print(transform.rescale(img, 0.1).shape) #缩小为原来图片大小的0.1
    print(transform.rescale(img, [0.5,0.25]).shape) #缩小为原来图片行数一半,列数四分之一
    print(transform.rescale(img, 2).shape) #放大为原来图片大小的2倍

    结果为:

    (512, 512)
    (51, 51)
    (256, 128)
    (1024, 1024)

    3、旋转 rotate

  • 相关阅读:
    C++ istringstream总结
    C++各数据类型的最值
    AcWing 机器人跳跃问题 二分
    蓝桥杯 矩形面积交
    蓝桥杯 完美的代价
    蓝桥杯 数的读法
    国内 镜像 下载
    redis的pipline使用
    MySQL额外操作
    sql强化演练( goods 表练习)
  • 原文地址:https://www.cnblogs.com/yanghelin/p/8025532.html
Copyright © 2020-2023  润新知