19

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

据我所知,用于机器视觉的 Python 唯一免费库是PyCV(它显然是OpenCV的包装器),但我找不到任何合适的教程。

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

以前,我使用 Matlab 的图像处理工具箱没有任何问题。我想在 Python 中找到等价的函数是graythreshregionpropsgray2ind

谢谢!

4

7 回答 7

13

OpenCV 可能是你最好的图书馆选择。您可以为它们选择包装器。我查看了标准 OpenCV 安装附带的 SWIG 包装器,但最终使用了ctypes-opencv,因为内存管理看起来更干净。

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

OpenCV 非常庞大,文档也不是特别完善,但是示例目录中包含一些不错的示例,您可以使用它们来入门。可搜索的 OpenCV API 参考在这里

您没有提到您是在寻找在线资源还是印刷资源,但我有O'Reilly的书,它非常好(C 中的示例,但易于翻译)。

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

对于阈值,您可以尝试Threshold。我确信您可以将标志传递给它以使用 Otsu 的方法,但它似乎没有在文档中列出。

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

于 2009-05-30T18:48:31.080 回答
7

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

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

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

于 2009-05-30T18:34:25.150 回答
4

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

于 2010-09-12T19:33:17.247 回答
2

You probably would be well served by SciPy. Here is the introductory tutorial for SciPy. It has a lot of similarities to Matlab. Especially the included matplotlib package, which is explicitly made to emulate the Matlab plotting functions. I don't believe SciPy has equivalents for the functions you mentioned. There are some things which are similar. For example, threshold is a very simple version of graythresh. It doesn't implement "Otsu's" method, it just does a simple threshold, but that might be close enough.

I'm sorry that I don't know of any tutorials which are closer to the task you described. But if you are accustomed to Matlab, and you want to do this in Python, SciPy is a good starting point.

于 2009-05-20T18:39:16.517 回答
0

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

于 2009-05-30T17:20:31.770 回答
0

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

于 2009-05-20T11:33:41.447 回答
0

前言:这本书更适合那些想要很好地了解计算机或机器视觉的人,尽管它涵盖了最初的问题。

[书籍]:用 Python 编程计算机视觉

目前,您可以从本书的网站上免费下载 PDF 格式的最终​​草稿:

http://programmingcomputervision.com/

从介绍:

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

你需要知道的

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

你会学到什么

  • 使用 Python 对图像进行动手编程。
  • 各种现实世界应用背后的计算机视觉技术。
  • 许多基本算法以及如何自己实现和应用它们。
于 2012-06-06T08:45:48.960 回答