Python中的机器视觉

时间:2009-05-20 10:45:29

标签: python matlab computer-vision

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

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

我的主要任务是从FireWire获取图像。在不同区域中分割图像。然后对每个区域进行统计,以确定像素区域和质心。

以前,我使用过Matlab的Image Processing Tootlbox没有任何问题。我希望在Python中找到等价的函数是graythreshregionpropsgray2ind

谢谢!

7 个答案:

答案 0 :(得分:13)

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

它们都是围绕C代码的非常薄的包装器,因此您可以找到的任何C引用都适用于Python。

OpenCV是巨大的,并没有特别好的文档记录,但样本目录中包含一些体面的样本,您可以使用它们来开始。可搜索的OpenCV API参考为here

你没有提到你是在寻找在线或印刷来源,但是我有O'Reilly书并且它非常好(C中的例子,但很容易翻译)。

FindContours函数有点类似于regionprops;它会为您提供已连接组件的列表,然后您可以检查这些组件以获取其信息。

对于阈值处理,您可以尝试Threshold。我确信你可以通过一个标志来使用Otsu的方法,但它似乎没有列在那里的文档中。

我没有遇到与gray2ind相对应的特定功能,但它们可能在那里。

答案 1 :(得分:7)

文档:几年前我使用OpenCV包装了很多Python。 OpenCV有大量文档记录,附带了许多示例,甚至还有book。我使用的Python包装器足够薄,因此需要非常少的包装器特定文档(这对于许多其他包装库来说是典型的)。我想几分钟看一个例子,比如PyCV单元测试就是你所需要的,然后你可以专注于适合你需要的OpenCV文档。

分析:至于是否有一个比OpenCV更好的库,我有点过时的观点是,如果你想做相当高级的东西(例如对象跟踪),OpenCV是很好的,但它可能会满足你的需求。听起来像scipy ndimage加上一些基本的numpy数组操作就足够了。

获取:我知道用于获取的选项是OpenCV,Motmot,或者使用ctypes直接连接到驱动程序。其中,我从未使用过Motmot,因为我在安装它时遇到了麻烦。我发现其他方法相当简单,虽然我不记得细节(这是一件好事,因为这意味着它很容易)。

答案 2 :(得分:4)

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

答案 3 :(得分:2)

SciPy你可能会得到很好的服务。这是SciPy的introductory tutorial。它与Matlab有很多相似之处。特别是包含的matplotlib包,它明确地模拟了Matlab绘图功能。我不相信SciPy具有您提到的功能的等价物。有些东西是相似的。例如,threshold是一个非常简单的graythresh版本。它没有实现“Otsu”方法,它只是做了一个简单的阈值,但可能足够接近。

对不起,我不知道任何更接近你描述的任务的教程。但如果您习惯使用Matlab,并且想在Python中执行此操作,SciPy是一个很好的起点。

答案 4 :(得分:0)

我不太了解这个包Motmot或者它与OpenCV的比较,但是我已经导入并使用了一两个类。大部分图像处理都是通过numpy数组完成的,可能与您使用Matlab满足需求的方式类似。

答案 5 :(得分:0)

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

答案 6 :(得分:0)

前言:本书更适合想要熟练掌握计算机或机器视觉的人,即使它涵盖了原始问题的内容。

[书]:Programming Computer Vision with Python

目前,您可以从图书网站免费下载最终草稿

<强> http://programmingcomputervision.com/

从介绍:

本书背后的想法是提供一个易于理解的实践切入点 计算机视觉与对基础理论和算法的充分理解 成为学生,研究人员和爱好者的基础。

您需要了解的内容

  • 基本编程经验。您需要知道如何使用编辑器并运行 脚本,如何构造代码以及基本数据类型。熟悉Python或其他脚本风格语言(如Ruby或Matlab)会有所帮助。
  • 基础数学。要充分利用这些示例,如果您了解它将会有所帮助 矩阵,向量,矩阵乘法,标准数学函数 和衍生物和渐变等概念。一些更高级的数学 - 很容易跳过几个例子。

你将学到什么

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