什么是CvBlobTrackerAuto类在OpenCV



我试图理解作为OpenCV示例代码提供的blobtrack.cpp代码。在此代码中,使用了名为CvBlobTrackerAuto的类。我试图找到一些关于这个类的文档,但它没有提供详细的解释。

我对……特别感兴趣
CvBlobTrackerAuto::Process(IplImage *pImg, IplImage *pMask = NULL)函数。这是做什么用的这个面具的任务是什么?

提前感谢

过去几周我一直在和CvBlobTrackerAuto一起工作。以下是我弄明白的一些事情。

CvBlobTrackerAuto::Process用于处理最后捕获的图像,以更新跟踪信息(blob id和位置)。实际上,CvBlobTrackerAuto是一个抽象类,因为它不提供CvBlobTrackerAuto::Process的实现。唯一的具体实现(据我所知)是CvBlobTrackerAuto1,它可以在blobtrackingauto.cpp中找到。

CvBlobTrackerAuto1::Process所做的是实现以下管道:

  • 前景检测:生成与前景对应的二进制掩码。
  • Blob跟踪:更新Blob的位置。它可以使用平均位移,粒子滤波器或这些的组合。
  • 后处理:(我不确定这部分是做什么的)。
  • Blob删除:根据那里的评论,它是"实验性和简单的"。它删除在最后一帧中太小或靠近图像边界的斑点。
  • Blob检测:检测新的Blob。看到enteringblobdetection.cpp。
  • 轨迹生成:(不确定它做什么)。
  • 跟踪分析:(不确定它是做什么的。但我确实记得我读过代码,并决定它对blob跟踪没有影响,所以我禁用了它。

CvBlobTrackerAuto::Process的这个特殊实现中,pMask参数没有任何用途。它的默认值为NULL,它被分配给一个变量一次,只在几行之后被覆盖。

在samples/c/blobtrack_sample.cpp中找到的OpenCv示例是围绕这个CvBlobTrackerAuto1类构建的,为管道中的每个模块提供不同的选项。

当我在OpenCV邮件组中发布相同的问题时,我被引导到这个链接。本文档解释了OpenCV Blobtracker及其模块。

相关内容

  • 没有找到相关文章

最新更新