使用OpenCV和Python检测标记

2 投票
2 回答
12318 浏览
提问于 2025-04-15 21:25

我正在尝试在网络摄像头的视频中识别一个标记,并在这个标记上叠加一个3D物体——基本上就是像这个链接里说的那样:http://www.morethantechnical.com/2009/06/28/augmented-reality-with-nyartoolkit-opencv-opengl/

我知道artoolkit是做这个的最佳工具,但我希望能用Python里的opencv来实现,因为我对C/C++的了解不够,没法使用artoolkit。我希望有人能帮我找到正确的方法来识别这个标记,并确定它的位置和方向等,因为我完全不知道该怎么做,也不知道应该使用哪些函数。

2 个回答

0

我觉得用Python和OpenCV来进行标记检测,最常用的方法就是使用SURF描述符。我发现这个视频非常有用,里面的代码可以在这个页面找到。这里可以下载代码。我不知道怎么把它和3D物体叠加在一起,但我相信你可以用pygame或者matplotlib做一些相关的工作。

2

OpenCV本身并不提供标记检测或追踪的功能。不过,它提供了实现这些功能所需的所有算法,所以自己动手做其实很简单。

你提到的那篇文章只用OpenCV来抓取视频,标记的检测是通过NyARToolkit来完成的,NyARToolkit是从ARToolkit发展而来的。NyARToolkit有Java、C#和ActionScript的版本。

ARToolkit主要是用普通的C语言写的,没有使用复杂的C++特性。其实它用起来可能比你想象的要简单。文档里有很多解释清楚的教程。例如,你可以查看这个链接:http://www.hitl.washington.edu/artoolkit/documentation/devstartup.htm

即使你决定不使用ARToolkit,入门文档也能帮助你理解标记检测的过程。

撰写回答