Python怎么构建一个文档扫描器


本篇内容主要讲解“Python怎么构建一个文档扫描器”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python怎么构建一个文档扫描器”吧!首先您应该熟悉Python的基础知识,还需要了解如何使用NumPy Python库。打开任何Python IDE,创建两个Python文件。将一个命名为main.py,将另一个命名为transform.py。然后在终端上执行以下命令,安装所需的库。您将使用OpenCV-Python获取图像输入并进行一些图像处理,使用Imutils来调整输入和输出图像的大小,并使用scikit-image对图像施加阈值。NumPy将帮助您处理数组。等待安装完成,并等待IDE更新项目骨干内容。骨干内容更新完成后,您就可以开始编程了。完整的源代码可以在GitHub代码库中找到。打开main.py文件,导入所安装的库。这将使您能够在必要时调用和使用它们的函数。忽略perspective_transform方面抛出的错误。您完成处理transform.py文件的工作后,错误会消失。为想要扫描的文档拍摄一张清晰的图像。确保文档的四个角及其内容都可见。将图像复制到存储程序文件的同一个文件夹中。将输入图像路径传递给OpenCV。制作原始图像的副本,因为您在透视转换期间需要它。将原始图像的高免费云主机域名度除以您想要调整到的高度。这将保持纵横比。最后,输出调整后的图像。上述代码的输出如下:现在您已经将原始图像的高度调整为500像素。将调整后的RGB图像转换为灰度图像。大多数图像处理库只处理灰度图像,因为它们更容易处理。注意原始图像和灰度图像之间的区别。彩色桌变成了黑白桌。对灰度图像运用高斯模糊滤镜以去除噪声。然后调用OpenCV canny函数来检测图像中存在的边缘。边缘在输出上是可见的。您将处理的边缘是文档的边缘。检测边缘图像中的轮廓。按降序排序,只保留五个最大的轮廓。通过循环排序后的轮廓,近似获取最大的四边轮廓。有四个边的轮廓很可能含有文档。圈出检测到的文档轮廓的几个角。这将帮助您确定您的程序是否能够检测图像中的文档。对调整后的RGB图像圈出几个角。检测到文档之后,现在需要从图像中提取文档。扭曲透视(warp perspective)是一种计算机视觉技术,用于转换图像以纠正失真。它将图像转换成不同的平面,让您可以从不同的角度查看图像。为了获得扭曲后的图像,您需要创建一个简单的模块来执行透视转换。该模块将对文档角的点进行排序。它还会将文档图像转换成不同的平面,并将相机角度更改为俯拍。打开之前创建的那个transform.py文件,导入OpenCV库和NumPy库。这个模块将含有两个函数。创建一个对文档角点的坐标进行排序的函数。第一个坐标将是左上角的坐标,第二个将是右上角的坐标,第三个将是右下角的坐标,第四个将是左下角的坐标。创建将计算新图像的角坐标,并获得俯拍的第二个函数。然后,它将计算透视变换矩阵,并返回扭曲的图像。现在您已创建了转换模块。perspective_transform导入方面的错误现在将消失。注意,显示的图像有俯拍。在main.py文件中,对扭曲的图像运用高斯阈值。这将给扭曲的图像一个扫描后的外观。将扫描后的图像输出保存到含有程序文件的文件夹中。以jpg格式保存扫描件可以保持文档质量。输出扫描后文档的图像:下图显示了程序的输出,即扫描后文档的俯拍。到此,相信大家对“Python怎么构建一个文档扫描器”有了更深的了解,不妨来实际操作一番吧!这里是百云主机网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

相关推荐: php如何循环数组检测是否包含某值

本篇内容主要讲解“php如何循环数组检测是否包含某值”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php如何循环数组检测是否包含某值”吧! 检测方法:1、用foreach语句循环遍历数组,语法“foreach ($…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

Like (0)
Donate 微信扫一扫 微信扫一扫
Previous 06/03 09:57
Next 06/03 09:57

相关推荐