python数字图像处理skimage读取显示与保存图片

  

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进行图片读取、显示和保存的示例及攻略,希望对您有所帮助!

相关文章