在本教程中,我将向你展示如何使用 Skimage imread 函数将图像加载到 Python 中。
所以我将解释skimage.io.imread
的语法。我还将向你展示一个清晰的、逐步的例子,说明如何使用该函数从文件中加载图像。
目录
好的让我们开始吧。
对Skimage imread函数的快速介绍
如果你在Python中进行图像处理,那么你需要做的第一件事就是将图像加载到你的编程环境中。
在Python中,有几个工具包可以帮助你做到这一点。 但是如果你是在数据科学和机器学习的背景下进行图像处理,最好的工具包之一就是Skimage包。
具体来说,你可以使用Skimage imread函数从计算机上的文件中读取图像,使其成为Python程序中可用的形式。
skimage imread函数使用起来非常简单,但要正确使用它,你需要了解其语法。
既然如此,我们来看看这个函数的语法。
skimage.io.imread的语法
现在我已经给你一个imread函数的高层次概述,让我们来看看它的语法。
imread函数是skimage.io
命名空间的一部分。 所以我们可以用skimage.io.imread()
来调用这个函数。
让我们快速讨论一下该函数的一些细节。
输入到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。
这个参数的参数将是一个True
或False
的布尔值。
如果是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)
输出
例子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)
输出
解释
在这里,为了把这个图像导入灰度图像,我们使用了skimage.io.imread
,并设置了as_gray = True
。
这是很简单的。 没有什么好说的。