如何使用EmguCV检测小斑点?

时间:2011-02-24 01:56:13

标签: opencv tracking emgucv blobs

我正试图从头顶摄像头跟踪机器人的位置。但是,由于我无法访问机器人或环境,所以我一直在处理网络摄像头的快照。
机器人有5个明亮的LED定位,这些LED与机器人和环境的颜色不同,以便轻松隔离 我已经能够使用EmguCV做到这一点,产生如下所示的二进制图像。我现在的问题是,如何获得五个斑点的位置并使用这些位置来确定机器人的位置和方向?

我一直在试验Emgu.CV.VideoSurveillance.BlobTrackerAuto类,但它固执地拒绝检测上图中的斑点。当涉及到这一点时,作为一个新手,我不知道我可能做错了什么 那么在上图中获得斑点位置的最佳方法是什么?

3 个答案:

答案 0 :(得分:2)

我无法告诉你如何使用emgucv,特别是你需要将来自opencv的调用转换为emgucv。您可以使用cv::findContours来获取blob,使用cv::moments来获取blob的位置(获取blob中间点的公式位于cv::moments的文档中)。然后,您将使用cv::estimateRigidTransform来获取机器人的位置和方向。

答案 1 :(得分:0)

我使用cvBlob库来处理blob。昨天我用它来检测小斑点并且工作正常。

答案 2 :(得分:0)

我写了一个python模块来做这件事。

http://letsmakerobots.com/node/38883#comments