Python数字图像处理skimage读取显示与保存图片
一、skimage简介
skimage(scikit-image)是一个基于Python语言的数字图像处理库,提供了常用的数字图像处理算法,例如滤波、变换、分割、特征提取等。同时,它也能与其他Python科学包,例如NumPy、SciPy进行无缝的集成,并支持多种常见图像格式,如PNG、JPEG、BMP等。在本文中,我们将利用skimage来读取、显示和保存图片。
二、读取图片
使用skimage中的imread函数可以读取图片。在读取图片时,通常需要先指定图片的路径,然后将读取到的图片转换为numpy数组,供后续处理。
以下是一个读取图片的示例:
import skimage.io as io
import numpy as np
# 读取图片并保存为numpy数组
img = io.imread('example.jpg')
# 打印图片大小和数据类型
print("Image shape:", img.shape)
print("Data type:", img.dtype)
# 显示图片
io.imshow(img)
io.show()
输出:
Image shape: (224, 224, 3)
Data type: uint8
以上代码中,我们首先导入skimage.io和numpy库。然后使用io.imread函数读取example.jpg,并将读取到的图片保存为numpy数组。我们还打印了一下图片的大小和数据类型,可以看到,该图片大小为224x224,数据类型为uint8。最后,我们使用io.imshow函数显示图片,并用io.show函数展示图片。
三、保存图片
使用skimage中的imsave函数可以将图片保存为指定格式的图片文件。在保存图片时,需要指定保存路径、文件名以及保存格式。
以下是一个保存图片的示例:
import skimage.io as io
import numpy as np
# 读取图片并保存为numpy数组
img = io.imread('example.jpg')
# 保存图片
io.imsave('example_copy.png', img)
以上代码中,我们首先导入skimage.io和numpy库。然后使用io.imread函数读取example.jpg,并将读取到的图片保存为numpy数组。接着我们使用io.imsave函数将图片保存为PNG格式的example_copy.png。执行以上代码后,我们会在当前目录下看到生成了一个example_copy.png的图片文件。
四、示例说明
示例1:将图片转换为灰度图
将彩色图片转换为灰度图是图像处理中的一个常用操作。使用skimage中的color.rgb2gray函数可以将彩色图片转为灰度图,从而方便后续的处理。
以下是一个将图片转为灰度图的示例:
import skimage.io as io
import skimage.color as color
# 读取图片并保存为numpy数组
img = io.imread('example.jpg')
# 将图片转换为灰度图并保存
gray_img = color.rgb2gray(img)
io.imsave('example_gray.png', gray_img)
# 显示灰度图
io.imshow(gray_img)
io.show()
以上代码中,我们首先导入skimage.io和skimage.color库。然后使用io.imread函数读取example.jpg,并将读取到的图片保存为numpy数组。接着,我们使用color.rgb2gray函数将彩色图片转为灰度图,并使用io.imsave函数将灰度图保存为example_gray.png。最后,我们使用io.imshow函数显示灰度图,并使用io.show函数展示灰度图。
示例2:裁剪图片
裁剪图片是图像处理中的一个重要操作,例如对于特定尺寸的图片,我们可以通过裁剪将图片调整为满足我们需求的大小。
以下是一个裁剪图片的示例:
import skimage.io as io
# 读取图片并保存为numpy数组
img = io.imread('example.jpg')
# 裁剪图片
cropped_img = img[50:150, 20:100]
# 显示裁剪后的图片
io.imshow(cropped_img)
io.show()
# 保存裁剪后的图片
io.imsave('example_cropped.png', cropped_img)
以上代码中,我们首先导入skimage.io库。然后使用io.imread函数读取example.jpg,并将读取到的图片保存为numpy数组。接着,我们使用切片的方式对图片进行裁剪,保留从第50行到第150行、从第20列到第100列的部分。然后使用io.imshow函数显示裁剪后的图片,并使用io.show函数展示。最后,我们使用io.imsave函数将裁剪后的图片保存为example_cropped.png。
以上就是使用skimage进行图片读取、显示和保存的示例及攻略,希望对您有所帮助!