virtual void AddBlob(CvBlob* pBlob) { DefBlobFilter* pF = (DefBlobFilter*)m_BlobFilterList.GetBlobByID(CV_BLOB_ID(pBlob)); if(pF == NULL) { /* Create new filter: */ DefBlobFilter F; F.blob = pBlob[0]; F.m_LastFrame = m_Frame; F.pFilter = m_CreatePostProc(); TransferParamsToChild(F.pFilter,NULL); m_BlobFilterList.AddBlob((CvBlob*)&F); pF = (DefBlobFilter*)m_BlobFilterList.GetBlobByID(CV_BLOB_ID(pBlob)); } assert(pF); pF->blob = pBlob[0]; pF->m_LastFrame = m_Frame; };
/* Return pointer to new added blob: */ virtual CvBlob* AddBlob(CvBlob* pB, IplImage* pImg, IplImage* pImgFG = NULL ) { DefBlobTrackerCR NewB; NewB.blob = pB[0]; NewB.pBlobHyp = new CvBlobSeq; NewB.pPredictor = cvCreateModuleBlobTrackPredictKalman(); /* module for predict position */ NewB.pPredictor->SetParam("DataNoisePos",0.001); NewB.pPredictor->ParamUpdate(); NewB.pResolver = NULL; if(m_CreateCR) { NewB.pResolver = m_CreateCR(); TransferParamsToChild(NewB.pResolver,NULL); NewB.pResolver->Init(pB, pImg, pImgFG); } m_BlobList.AddBlob((CvBlob*)&NewB); return m_BlobList.GetBlob(m_BlobList.GetBlobNum()-1); };