如何将图像转换为 NumPy 数组?2025年3月17日 | 阅读 10 分钟 在图像的不同维度上训练机器学习模型需要将图像转换为 NumPy 数组。通常,转换是隐式发生的;但是,有多种方法可以显式执行相同的操作。它可以用于以光速执行复杂的计算。 诸如 OpenCV 等 Python 包用于以三维 NumPy 数组的形式存储图像,以便进行快速操作。有时,像 PIL、Scikit-image、Keras 这样的包用于以特殊格式包装图片,以便更轻松地进行图像处理。 由于 NumPy 包中没有内置函数可以将图像转换为 NumPy 数组;因此,我们必须使用 OpenCV、PIL、Scikit-image 或 Keras 等外部工具来完成此任务。 在下面的教程中,我们将了解用于将图像转换为 NumPy 数组的不同方法。我们还将学习如何在 Python 编程语言中将 NumPy 数组转换回图像。 那么,让我们开始吧。 设置所需的模块为了开始将图像转换为 NumPy 数组,我们需要在本地系统上安装一些模块。这些模块包括
为了在系统中安装或更新这些库,我们必须在命令提示符中运行以下命令,最好在管理员模式下运行 语法验证安装为了检查所需的库是否已正确安装在系统中,我们可以尝试导入这些模块并执行程序。 安装完成后,创建一个新的 Python 文件并在其中输入以下语法。 示例 现在,保存文件并在命令提示符下使用以下命令运行该文件。 语法 如果程序运行没有引发任何导入错误,则所有模块都已正确安装。否则建议重新安装该模块并参考其官方文档。 现在,我们接下来将逐一介绍所有上述库将图像转换为 NumPy 数组的实现。 本教程中将使用的图像如下所示,用户可以保存以下图像,或使用他们想要的任何图像。 文件:sample-image.png ![]() 方法 1:使用 OpenCV 将图像转换为 NumPy 数组OpenCV 是一个开源库,用于在 Python 中进行实时计算机视觉和图像处理。它支持执行用于训练和其他机器学习算法的模型。它广泛用于图像和视频处理,以识别物体、人脸、人类笔迹等等。 imread() 和 imwrite() 方法是 OpenCV 库中广泛使用的方法。这些方法通常分别用于读取图像文件并将其保存为指定文件。 我们可以使用这些方法将图像文件转换为 NumPy 数组。让我们考虑以下代码片段来说明这一点。 示例 输出 The image has been converted from PNG format to 文件:open_cv_sample_image.png ![]() 说明 在上面的代码片段中,我们导入了 OpenCV 模块。然后我们使用 imread() 方法读取图像文件的内容并将其存储在一个变量中。然后我们使用 cvtColor() 方法通过传递 cv2.COLOR_BGR2RGB 属性将图像颜色从 BGR 转换为 RGB。然后我们使用 imwrite() 方法将图像写入文件。最后,我们打印了转换后图像的类型。 结果,图像已使用 OpenCV 库成功转换为 NumPy 数组。 方法 2:使用 Pillow (PIL) 将图像转换为 NumPy 数组Pillow 库是 Python 编程语言中用于操作图像的强大库之一。Pillow 库用于根据要求以不同格式存储图像。我们还将使用 NumPy 模块的 asarray() 方法将图像转换为数组并存储。 让我们考虑以下示例,分别说明使用 PIL 和 NumPy 库将图像转换为数组。 示例 输出 The type after conversion is: 说明 在上面的代码片段中,我们导入了所需的模块和方法,包括 PIL 库中的 Image 模块和 NumPy 模块中的 asarray() 方法。然后我们使用 Image.open() 方法加载图像文件。然后我们使用 asarray() 方法将 PIL 图像转换为 NumPy 数组。然后我们打印了转换后图像的类型及其形状和像素信息。 结果,PIL 图像已使用 PIL 和 NumPy 库成功转换为 NumPy 数组。 方法 3:使用 Scikit-Image 将图像转换为 NumPy 数组Scikit-Image 是一个用于图像处理的开源 Python 库。该库包含各种用于分割、色彩空间操作、几何变换、分析、形态学、过滤、特征检测等算法和方法。它旨在与 NumPy 和 SciPy 等其他 Python 库互操作。 Scikit-Image 可以让我们高效地将图像转换为 NumPy 数组。我们可以使用 io.imread() 方法来读取图像文件的内容并将其转换为 NumPy 数组。 让我们考虑以下代码片段,说明 Scikit-Image 在将图像转换为 NumPy 数组中的使用。 示例 输出 The type of the transformed image: 说明 在上面的代码片段中,我们从 skimage 库中导入了 io 模块。然后我们使用 io.imread() 方法读取图像文件,将格式转换为 NumPy 数组并将其存储在一个变量中。然后我们打印了转换后图像的类型、数据类型、维度和像素信息。 结果,PIL 图像已使用 Scikit-Image 库成功转换为 NumPy 数组。 方法 4:使用 Keras API 将图像转换为 NumPy 数组Keras 是一个开源库,为人工神经网络提供 Python 接口。Keras 需要 TensorFlow 作为其工作接口。此方法也有助于将图像转换为 NumPy 数组。 让我们考虑以下代码片段,说明 Keras API 在将图像转换为 NumPy 数组中的使用。 示例 输出 The mode of the original image: RGB The dimensions of the original image: (911, 465) Details about the image after conversion: The datatype of the transformed image: 说明 在上面的代码片段中,我们导入了所需的模块和方法。然后我们使用 load_img() 方法加载图像并打印原始图像的各种详细信息。然后我们使用 img_to_array() 方法将原始图像转换为 NumPy 数组并打印转换后图像的不同详细信息。 结果,图像已使用 Keras API 成功转换为 NumPy 数组。 将图像转换为 NumPy 数组的一些主要优点以下是将图像转换为 NumPy 数组的一些优点
结论我们可以将图像以 NumPy 数组的形式馈送给复杂的神经网络以进行高效操作。有各种深度学习算法会隐式地将图像转换为数组;但是,程序和用户可以根据需要显式地执行转换。 Python 作为一种极具适应性的语言,允许程序员轻松编写人工网络和机器学习模型。借助高级 API 和不同的库,图像处理在 Python 环境中变得轻而易举。 在上面的教程中,我们学习了在各种 Python 库(包括 OpenCV、Pillow、NumPy、Scikit-Image、TensorFlow 和 Keras)的帮助下将图像转换为 NumPy 数组的各种方法。我们了解了实现这些库的不同方法来操作图像。我们还讨论了将图像转换为 NumPy 数组的几个优点。 下一主题如何在微调期间创建嵌入动画 |
我们请求您订阅我们的新闻通讯以获取最新更新。