在 Python 中获取图像数据

2024 年 8 月 29 日 | 阅读 6 分钟

Python 是一门广受欢迎的编程语言。Guido Van Rossum 于 1991 年在荷兰 CWI (Centrum Wiskunde& Informatica) 创建并发布了它。Python 是一种高级、通用且动态的编程语言。

Python 平台独立、简单易学。它也是免费开源的。除了具有广泛的自由支持外,它还可以嵌入和扩展。

在提取发票、收据和其他区域信息等业务部门中,从图像中提取文本是常见做法。

光学字符识别是一种基于电子计算机的方法,用于将图像转换为机器编码的文本,这些文本可以提取并用于文本格式。

我们需要熟悉三个术语才能了解更多关于它的信息。

  1. Tesseract
  2. pytesseract
  3. pillow

Tesseract 是一个开源的 OCR(光学字符识别)引擎,可用于从图像中提取文本。

要使用 Python 中的 tesseract,我们还需要 py-tesseract 库,它是 tesseract 引擎的一个包装器。

既然我们现在要处理图像,我们还需要 pillow 库,它将为 Python 提供图像处理功能。

我们首先查找适用于我们操作系统的 Tesseract 安装程序。Tesseract 安装程序的最新版本可以在 Windows 下找到;我们必须下载 ".exe" 文件并将其安装在我们的计算机上。

在 Windows 操作系统上打开 cmd 或命令提示符,如果尚未安装 Python 库,请使用以下命令进行安装。

Python PIL

Python 解释器现在可以访问 Python 图像库,简称 PIL。名为 "picture" 的模块将提供一个同名类来处理 PIL 图像。此外,该模块还将提供许多用于创建新图像和从文件加载图像的函数。

通过调用 get data(),我们可以获取图像的像素值,这将返回一个序列对象。由于序列对象已被展平,第一行的值将紧随零行的值之后,序列将继续。

注意:此方法是一个内部 PIL 数据类型,仅支持某些序列操作,它将返回序列对象。我们使用 list (im. getdata()) 将其转换为典型的序列,例如打印。

让我们谈谈参数。

Band:它将显示它将返回的通道。这是返回所有通道的标准方法。要返回单个通道,请在列表中传递值 0 以从 "RGB" 图像中获取 "R" 通道。

返回类型:它是一个类似文章的集合。

在 Python 中读取图像

Python 编程语言将支持最强大的图像处理工具。现在我们知道如何使用 ImageIO、OpenCV、Matplotlib 和 PIL 等库,我们可以看到如何处理图像。

  • 使用 ImageIO:ImageIO 是一个 Python 库,它将提供一种简单的方法来读取和写入许多不同类型的图像数据,包括动画视频、动画图像和科学格式。它是跨平台的,易于安装,并且可以在 Python 3.7 及更高版本上运行。它还被 sci-kit-image 等库在内部使用来加载图像,使其成为 scipy.misc.imread 的替代方案之一。
  • 使用 OpenCV:OpenCV 称为开源计算机视觉,是一个包含各种图像或视频处理功能的计算机视觉库。它由 Intel 创建,此后一直由 Itseez 维护。它是一个可以在所有平台上运行的库,可以与 Python、C++ 和其他编程语言一起使用。
  • 使用 Matplotlib:Matplotlib 是一个具有 Python 中可视化功能的库,用于绘制 NumPy 数组的二维图。Matplotlib 是一个基于 NumPy 数组的多平台数据可视化库,旨在与更广泛的 SciPy 堆栈配合使用。John Tracker 于 2002 年发布了它。Matplotlib 包含各种图表。我们可以通过图表创建连接并理解趋势和模式。它们是定量思维数据的常用工具。
  • 使用 PIL:Python 图像库 (PIL) 为 Python 解释器提供了编辑图像的工具。它由 Fredrik Lundh 和许多其他贡献者创建。Pillow 由 Alex Clark 和其他贡献者开发,是 PIL 的一个友好且用户友好的库。

如何在 Python 中查找图像中的简单对象并提取其像素值?

当我们想查找图像像素中的每个值时,我们使用像素来查找对象。我们知道图像由像素组成,当这些值通过 Python 提取时,我们得到以下值:R、G、B 和 A。这些是 RGBA 颜色,包括红色、绿色和蓝色;同样,还有一个 alpha 值。

我们将使用 Python 图像库 PIL,在 Python 编程语言中。该库的模块可以处理图像,并兼容 png、jpg、gif 等各种文件类型。它还具有打开、提取数据、修改属性、创建新图像等附加功能。

在 Ubuntu 中,PIL 与 Python 2.7 一起安装;对于 Windows,必须手动安装。您可以使用 Python 2.7 或更高版本从该位置下载剩余的操作系统的 PIL。

创建一个包含像素值列表并提取。我们也可以使用 IDLE shell,但提取值需要更长的时间,因此使用命令行界面被认为是完整的。有一种获取值的方法,如下所示

上面,我的文件是需要读取的图像的名称,并给出文件的正确格式。如果是 jpeg,则以 myfile.jpeg 的形式给出。

->我们使用一个名为 getdata() 的图像功能模块来提取像素值。它将从左上角开始,从左到右水平扫描图像。然后将从每个像素获得的值添加到列表中。最后,我们有一个列表,其中包含每个像素的四个值:根据 alpha 值,红色、绿色和蓝色。

从上面可以看出,包含打印像素值的列表是 pix_val。然而,我们得到的列表是集合的列表,所以有时需要展平列表。例如,如果列表是 [(1, 2, 3, 4), (3, 4, 5, 6)...] 并且需要的列表是 [1, 2, 3, 4, 3, 4, 5, 6...],那么展平列表的命令如下:

上面的命令行将分离 pix_val 中每个集合的每个组件,所有组件都存储在 pix_val_flat 中。因此,它可以编译成脚本或开发成可在后续图像处理项目中使用的函数。

PIL 是图像处理技术之一。pygame 或 numpy 也被用于处理图像的相应模块。

在 OpenCV 中处理图像像素

在计算机视觉中,像素是图像的全部属性。图像中的最小数据单元是代表特定空间中光强度色彩的数学值。

图像的总像素数是图像的高度、宽度和通道数的总和。

OpenCV 中的图像被读取为像素值的 Numpy 数组;使用切片操作,可以获取和处理由其像素表示的图像区域。

切片操作用于恢复记录、元组和数组等集合的子集。它们用于获取图像区域的像素值,用于编辑、格式化和裁剪。

使用切片操作获取列表子集的程序

输出

First three numbers:  [ '1',  '2',  '3' ]
First three numbers:  [ '1',  '2',  '3' ]
Last three numbers:   [ '3',  '4',  '5' ]
Second to fourth numbers: [ '2',  '3',  '4' ]

下一主题IPython Display