Python中的机器视觉

19

我想使用Python执行一些基本的机器视觉任务,想知道在哪里可以找到帮助我入门的教程。

据我所知,Python中唯一免费的机器视觉库是PyCV(显然是OpenCV的一个包装器),但我找不到适当的教程。

我的主要任务是从FireWire获取图像。将图像分割成不同的区域。然后对每个区域执行统计操作,以确定像素面积和质心。

以前,我使用过Matlab的Image Processing Tootlbox,没有遇到任何问题。我想找到Python中相当于的函数,包括graythreshregionpropsgray2ind

谢谢!


Python绑定OpenCV已经包含在官方发行版中。您可能还对SimpleCV感兴趣,这是一个基于其他几个库(包括OpenCV)构建的Python框架。 - Amro
7个回答

13

OpenCV可能是您使用的最佳库;您可以选择它们的包装器。我查看了标准OpenCV安装中附带的SWIG包装器,但最终使用了ctypes-opencv,因为内存管理似乎更清晰。

它们都是围绕C代码的轻量级包装器,因此任何您可以找到的C参考资料都适用于Python。

OpenCV非常庞大,文档也不是特别好,但是在示例目录中包含了一些不错的示例,供您开始使用。可搜索的OpenCV API参考在这里

您没有提到是否正在寻找在线或打印来源,但我有O'Reilly的书,它很不错(例子是用C编写的,但易于转换)。

FindContours函数与regionprops有些相似;它将为您获取连接组件的列表,然后您可以检查其信息。

对于阈值处理,您可以尝试Threshold。我确定您可以向其传递标志以使用Otsu方法,但是似乎在那里的文档中没有列出。

我还没有遇到与gray2ind相对应的特定函数,但它们可能存在其中。


3
使用Otsu方法进行阈值处理的方式如下:cv.Threshold(src, dst, threshold, maxValue, cv.CV_THRESH_BINARY | cv.CV_THRESH_OTSU)。由于Otsu方法会自动确定最佳阈值,因此参数阈值会被忽略。文档链接:http://opencv.willowgarage.com/documentation/python/imgproc_miscellaneous_image_transformations.html?highlight=threshold#Threshold。 - carnieri

7

文档:几年前我经常使用Python包装的OpenCV。OpenCV有广泛的文档,附带许多示例,甚至还有一本。我使用的Python包装器足够薄,以至于很少需要特定于包装器的文档(这对许多其他包装库也是典型的)。我想看一下示例,比如PyCV单元测试,可能是你所需要的全部,然后你可以专注于适合你需求的OpenCV文档。

分析:至于是否有比OpenCV更好的库,我的有些过时的观点是,如果您想要做相当高级的事情(例如对象跟踪),那么OpenCV非常棒,但对于您的需求可能过于复杂。听起来像是scipy ndimage结合一些基本的numpy数组操作就足够了。

获取:我所知道的获取选项有OpenCV、Motmot或使用ctypes直接与驱动程序进行接口交互。其中,我从未使用过Motmot,因为我在安装时遇到了问题。其他方法我觉得相当简单,尽管我不记得细节(这是一件好事,因为这意味着它很容易)。


4

我已经开始了一个关于这个主题的网站:pythonvision.org。它有一些教程和软件链接。那里还有更多的链接和教程。


2
您可能会对SciPy受益匪浅。这是SciPy的入门教程,它与Matlab有很多相似之处。特别是包括matplotlib软件包,该软件包明确地用于模拟Matlab绘图函数。我不认为SciPy有您提到的函数的等价物。有些东西相似。例如,threshold是graythresh的一个非常简单的版本。它没有实现“Otsu”的方法,只是进行了一个简单的阈值处理,但这可能已足够接近。

很抱歉我不知道有什么更接近您所描述任务的教程。但是,如果您习惯使用Matlab,并且想在Python中完成此操作,则SciPy是一个很好的起点。


0

我使用.NET和IronPython从FW相机获取了图像。在CPython上,我会检查ctypes库,除非你找到任何支持抓取的库。


0

我对这个 Motmot 包不是很了解,也不知道它和 OpenCV 相比如何,但是我已经导入并使用其中的一两个类。大部分图像处理都是通过 numpy 数组完成的,可能与你使用 Matlab 的方式相似,可以满足你的需求。


0
前言:这本书更适合那些想要深入了解计算机或机器视觉的人,尽管它也涵盖了原始问题所问的内容。
[书籍]: 使用Python进行编程计算机视觉 目前,您可以从该书的网站免费下载最终草稿版的PDF文件

http://programmingcomputervision.com/

从介绍开始:

本书的理念是为学生、研究人员和爱好者提供一个易于接近的入门点,让他们能够进行实践性的计算机视觉,并具备足够的理论和算法基础。

你需要知道什么

  • 基本的编程经验。你需要知道如何使用编辑器和运行脚本,如何组织代码以及基本数据类型。熟悉Python或其他脚本语言(如Ruby或Matlab)将有所帮助。
  • 基本数学知识。为了充分利用示例,如果你了解矩阵、向量、矩阵乘法、标准数学函数以及导数和梯度等概念,将会有所帮助。一些更高级的数学示例可以轻松跳过。

你将学到什么

  • 使用Python进行图像编程的实践经验。
  • 实现各种真实世界应用程序背后的计算机视觉技术。
  • 许多基本算法以及如何自己实现和应用它们。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接