如何用Skimage imread将图片导入Python中

331 阅读6分钟

在本教程中,我将向你展示如何使用 Skimage imread 函数将图像加载到 Python 中。

所以我将解释skimage.io.imread 的语法。我还将向你展示一个清晰的、逐步的例子,说明如何使用该函数从文件中加载图像。

目录

好的让我们开始吧。

对Skimage imread函数的快速介绍

如果你在Python中进行图像处理,那么你需要做的第一件事就是图像加载到你的编程环境中。

在Python中,有几个工具包可以帮助你做到这一点。 但是如果你是在数据科学和机器学习的背景下进行图像处理,最好的工具包之一就是Skimage包。

具体来说,你可以使用Skimage imread函数从计算机上的文件中读取图像,使其成为Python程序中可用的形式。

An image that shows how the skimage imread function loads an image file into Python.

skimage imread函数使用起来非常简单,但要正确使用它,你需要了解其语法。

既然如此,我们来看看这个函数的语法。

skimage.io.imread的语法

现在我已经给你一个imread函数的高层次概述,让我们来看看它的语法。

imread函数是skimage.io 命名空间的一部分。 所以我们可以用skimage.io.imread() 来调用这个函数。

An explanation of the syntax of the skimage.io.imread function.

让我们快速讨论一下该函数的一些细节。

输入到skimage.io.imread

在上面的语法解释中,你会注意到括号内有一个输入。

在该解释中,我把这个输入称为"your_image_file"。

就格式而言,这应该是一个像jpg 文件的图像文件。

更具体地说,你应该把文件的名称以字符串的形式呈现,包括图像文件的整个路径。

因此,例如,如果你的文件被命名为Lamborghini_Aventador_2018.jpg ,而图像在你电脑上的一个文件夹里,/documents/images/ ,那么你可以这样调用这个函数。

skimage.io.imread('/documents/images/Lamborghini_Aventador_2018.jpg')

请注意,文件的完整路径和名称都包含在引号中。

如果文件存在于互联网上的一个URL,你也可以提供完整的URL路径和文件名(包含在引号内)。 它也会以这种方式工作。 我将在例子部分向你展示一个例子。

附加参数

该函数还有一些可选参数,你可以用它们来修改函数的行为方式。

as_gray

as_gray 参数使你能够将图像转换为grascale。

这个参数的参数将是一个TrueFalse 的布尔值。

如果是as_gray = True ,它将把图像转换为灰度。

这个参数是可选的。

已经是灰度的图像将不受使用此参数的影响。

插件

plugin 参数使你可以指定一个要使用的插件。

在本教程中我们将不涉及该参数的使用。

skimage.io.imread的输出

skimage.io.imread 的输出是一个Numpy数组

输出的尺寸取决于图像中使用的颜色方案。

如果图像是灰度的,那么输出将是一个M x N数组(M行和N列)。

如果图像使用的是RGB颜色,那么输出将是M x N x 3,这个第三维将包含RGB颜色通道数据。

如果图像使用RGBA颜色,那么输出将是M x N x 4,这个第三维将包含RGBA颜色通道数据。

示例:如何用Skimage imread导入图片

现在我们已经看了sklearn.io.imread的语法,让我们看看一些如何将图像导入Python的例子。

例子

先运行这段代码

在你运行这些例子之前,你需要导入一些包并运行一些初步的代码。

导入软件包

首先,我们需要导入几个Python包。

import plotly.express as px
import skimage.io

我们显然需要skimage 来运行sklearn.io.imread 函数。

我们还将使用plotly.express ,以便在加载图像后将其实际可视化

如果你的电脑上没有这些包,那么你需要先安装它们。

设置图像渲染

默认情况下,Plotly被设置为在浏览器窗口渲染图像。

所以,如果你使用像Spyder这样的IDE(集成开发环境),你需要设置它来渲染Plotly的图。

注意:如果你使用的是Jupyter,你可以跳过这段代码!

要设置Plotly直接在你的IDE中渲染你的绘图,你可以运行以下代码。

import plotly.io as pio
pio.renderers.default = 'svg'

例子1:用sklearn.io.imread加载一个图片

在这里,我们要用Skimage imread加载一个图像文件,然后用Plotly绘制它。

该文件在一个文件夹中,地址是www.sharpsightlabs.com/datasets/im…

下面是读取它的代码。

skimage.io.imread('https://www.sharpsightlabs.com/datasets/images/Lamborghini_Aventador_2018.jpg')

输出

array([[[ 59,  58,  54],
        [ 56,  58,  55],
        [ 56,  58,  55],
        ...,
        [ 36,  37,  39],
        [ 35,  39,  38],
        [ 31,  37,  33]],

       [[ 56,  57,  51],
        [ 55,  56,  51],
        [ 53,  53,  51],
        ...,
        [ 39,  41,  38],
        [ 39,  41,  38],
        [ 36,  41,  35]],

       [[ 54,  55,  50],
        [ 54,  55,  50],
        [ 55,  55,  53],
        ...,
        [ 35,  40,  34],
        [ 39,  41,  36],
        [ 39,  41,  36]],

       ...,

       [[255, 255, 255],
        [255, 255, 255],
        [255, 255, 255],
        ...,
        [251, 244, 252],
        [247, 241, 251],
        [247, 244, 253]],

       [[255, 255, 255],
        [255, 255, 255],
        [255, 255, 255],
        ...,
        [250, 242, 253],
        [248, 242, 252],
        [247, 246, 254]],

       [[255, 255, 255],
        [255, 255, 255],
        [255, 255, 255],
        ...,
        [249, 241, 252],
        [249, 243, 253],
        [248, 247, 255]]], dtype=uint8)

解释

在这里,我们已经加载了一个名为Lamborghini_Aventador_2018.jpg 的文件。 这个文件存在于URLhttps://www.sharpsightlabs.com/datasets/images/

所以为了加载这个文件,我们调用了这个函数,这个函数的参数是完整的URL路径和文件名,用引号括起来。

输出是一个多维的Numpy数组。

我们可以通过使用Plotly的imshow函数将这个数组可视化。 让我们稍微重新运行一下代码来做到这一点。

aventador = skimage.io.imread('https://www.sharpsightlabs.com/datasets/images/Lamborghini_Aventador_2018.jpg')

px.imshow(aventador)

输出

An image of a jpg file imported with skimage.io.imread and visualized with Plotly express.

例子2:将图像导入为灰度图像

现在,我们将图像文件导入为灰度图像,并绘制它。

要做到这一点,我们将设置as_gray = True

此外,为了绘制灰度图像,这次我们将使用skimage.io.imshow

让我们来看看。

aventador_gray = skimage.io.imread('https://www.sharpsightlabs.com/datasets/images/Lamborghini_Aventador_2018.jpg', as_gray = True)
skimage.io.imshow(aventador_gray)

输出

An example of a grayscale image loaded with skimage imshow, with as_gray = True.

解释

在这里,为了把这个图像导入灰度图像,我们使用了skimage.io.imread ,并设置了as_gray = True

这是很简单的。 没有什么好说的。