Python中的机器视觉
我想用Python做一些基本的机器视觉任务,想知道哪里可以找到一些教程来帮助我入门。
据我所知,Python中唯一免费的机器视觉库是PyCV(这似乎是OpenCV的一个封装),但我找不到合适的教程。
我主要的任务是从FireWire获取图像。将图像分成不同的区域。然后对每个区域进行统计,以确定像素面积和质心。
之前,我使用过Matlab的图像处理工具箱,没有遇到任何问题。我想在Python中找到的功能有graythresh、regionprops和gray2ind。
谢谢!
7 个回答
我开始了一个关于这个主题的网站:pythonvision.org。网站上有一些教程,还有一些软件的链接。那里有更多的链接和教程。
文档:几年前,我经常使用Python的OpenCV库。OpenCV的文档非常全面,里面有很多示例,甚至还有一本书。我用的Python封装很简单,所以几乎不需要特别的文档(这在很多其他封装库中也是这样)。我想,花几分钟看看像PyCV单元测试这样的示例就足够了,然后你可以专注于查阅适合你需求的OpenCV文档。
分析:至于有没有比OpenCV更好的库,我的看法有点过时,但我觉得如果你想做一些比较高级的事情(比如物体追踪),OpenCV是个不错的选择,不过可能对你的需求来说有点过于复杂。听起来scipy的ndimage结合一些基本的numpy数组操作可能就足够了。
获取:我知道的获取选项有OpenCV、Motmot,或者使用ctypes直接与驱动程序接口。对于这些,我从来没有使用过Motmot,因为我在安装时遇到了麻烦。其他方法我觉得相对简单,虽然我不记得具体细节(这其实是好事,因为说明它很容易)。
OpenCV可能是你最好的选择,它是一个非常强大的库,你可以选择不同的封装工具。我查看了标准OpenCV安装包里的SWIG封装,但最后选择了ctypes-opencv,因为它的内存管理看起来更简单。
这两种封装工具都是对C语言代码的简单包装,所以你找到的任何C语言参考资料都可以用在Python上。
OpenCV的内容非常庞大,而且文档不是特别完善,不过在样例目录里有一些不错的示例,可以帮助你入门。你可以在这里找到一个可以搜索的OpenCV API参考。
你没有提到你是在找在线资源还是纸质书籍,但我有一本O'Reilly的书,内容相当不错(虽然示例是C语言的,但很容易转换成其他语言)。
FindContours函数有点像regionprops;它会给你一个连接组件的列表,你可以查看这些组件的信息。
对于阈值处理,你可以试试Threshold。我记得你可以给它传一个参数来使用Otsu的方法,但在文档里似乎没有找到相关信息。
我没有找到与gray2ind对应的具体函数,但它们可能在里面。