我想使用 Python 执行一些基本的机器视觉任务,我想知道在哪里可以找到帮助我入门的教程。
据我所知,用于机器视觉的 Python 唯一免费库是PyCV(它显然是OpenCV的包装器),但我找不到任何合适的教程。
我的主要任务是从 FireWire 获取图像。在不同区域分割图像。然后对每个区域进行统计,确定像素面积和质心。
以前,我使用 Matlab 的图像处理工具箱没有任何问题。我想在 Python 中找到等价的函数是graythresh、regionprops和gray2ind。
谢谢!
我想使用 Python 执行一些基本的机器视觉任务,我想知道在哪里可以找到帮助我入门的教程。
据我所知,用于机器视觉的 Python 唯一免费库是PyCV(它显然是OpenCV的包装器),但我找不到任何合适的教程。
我的主要任务是从 FireWire 获取图像。在不同区域分割图像。然后对每个区域进行统计,确定像素面积和质心。
以前,我使用 Matlab 的图像处理工具箱没有任何问题。我想在 Python 中找到等价的函数是graythresh、regionprops和gray2ind。
谢谢!
OpenCV 可能是你最好的图书馆选择。您可以为它们选择包装器。我查看了标准 OpenCV 安装附带的 SWIG 包装器,但最终使用了ctypes-opencv,因为内存管理看起来更干净。
它们都是 C 代码的非常薄的包装器,因此您可以找到的任何 C 引用都将适用于 Python。
OpenCV 非常庞大,文档也不是特别完善,但是示例目录中包含一些不错的示例,您可以使用它们来入门。可搜索的 OpenCV API 参考在这里。
您没有提到您是在寻找在线资源还是印刷资源,但我有O'Reilly的书,它非常好(C 中的示例,但易于翻译)。
FindContours函数有点类似于 regionprops;它将为您提供已连接组件的列表,然后您可以对其进行检查以获取其信息。
对于阈值,您可以尝试Threshold。我确信您可以将标志传递给它以使用 Otsu 的方法,但它似乎没有在文档中列出。
我没有遇到与 gray2ind 对应的特定函数,但它们可能在那里。
文档:几年前,我经常使用为 Python 包装的 OpenCV。OpenCV 有大量文档,附带许多示例,甚至还有一本书。我使用的 Python 包装器足够薄,因此只需要很少的包装器特定文档(这对于许多其他包装库来说是典型的)。我想花几分钟看一个例子,比如 PyCV 单元测试就是你所需要的,然后你就可以专注于适合你需要的 OpenCV 文档。
分析:至于是否有比 OpenCV 更好的库,我有点过时的观点是,如果你想做相当高级的事情(例如对象跟踪),OpenCV 是很棒的,但它可能对你的需求来说有点过头了。听起来 scipy ndimage结合一些基本的 numpy 数组操作可能就足够了。
采集:我所知道的采集选项是 OpenCV、Motmot,或者使用 ctypes 直接连接到驱动程序。其中,我从未使用过 Motmot,因为安装时遇到了麻烦。我发现其他方法相当简单,虽然我不记得细节(这是一件好事,因为这意味着它很容易)。
我已经建立了一个关于这个主题的网站:pythonvision.org。它有一些教程、&c 和一些软件链接。那里有更多的链接和教程。
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.
我已经使用 .NET 和 IronPython 从 FW 相机获取图像。在 CPython 上,我会检查 ctypes 库,除非您找到任何支持抓取的库。
我不太了解这个包Motmot或它与 OpenCV 的比较,但我已经导入并使用了其中的一两个类。大部分图像处理是通过 numpy 数组完成的,可能与您使用 Matlab 满足您的需求的方式非常相似。
前言:这本书更适合那些想要很好地了解计算机或机器视觉的人,尽管它涵盖了最初的问题。
目前,您可以从本书的网站上免费下载 PDF 格式的最终草稿:
http://programmingcomputervision.com/
从介绍:
本书背后的想法是为实践计算机视觉提供一个易于访问的切入点,并充分了解基础理论和算法,为学生、研究人员和爱好者奠定基础。
你需要知道的
你会学到什么