什么是OpenCV中的CvBlobTrackerAuto类?

Nir*_*han 1 opencv

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

我对
CvBlobTrackerAuto::Process(IplImage *pImg, IplImage *pMask = NULL)功能特别感兴趣.这是做什么的,这个面具的任务是什么?

先感谢您

Jon*_*Lee 5

CvBlobTrackerAuto在过去几周一直在和你合作.以下是我想到的一些事情.

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

CvBlobTrackerAuto1::Process实现以下管道的作用是什么:

  • 前景检测:这会产生对应于前景的二进制掩码.
  • Blob跟踪:更新blob的位置.它可以使用均值平移,粒子滤波器或这些的组合.
  • 后处理:(我不确定本节的内容).
  • Blob删除:根据那里的评论,它是"实验性的和简单的".它会删除最后一帧中太小或靠近图像边界的斑点.
  • Blob检测:检测新的blob.请参阅enterblobdetection.cpp.
  • 轨迹生成:(不确定它的作用).
  • 跟踪分析:(不确定它的作用.但我记得已经阅读过代码并判断它对blob跟踪没有影响,所以我禁用了它.)

在该特定实现中CvBlobTrackerAuto::Process,该pMask参数根本不用于任何内容.它的默认值为NULL,并将其赋值给变量一次,以后稍后会覆盖某些行.

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

我希望它有所帮助.