#include namespace icl{ template const vector > &ColorBlobSearcher:: search(Img *poImage, Img8u *poMask){ ICLASSERT_RETURN_VAL( poImage->getChannels() == 3 , m_vecFoundBlobs ); icl8u *mask = 0; if(poMask){ mask = poMask->getData(0); ICLASSERT_RETURN_VAL( poImage->getSize() == poMask->getSize() , m_vecFoundBlobs ); } prepareForNewImage(poImage,poMask); PixelType *pt0 = poImage->getData(0); PixelType *pt1 = poImage->getData(1); PixelType *pt2 = poImage->getData(2); Rect oRoi = poImage->getROI(); int x,y,i,d; int iImageW = poImage->getSize().width; if(mask){ for(y =oRoi.y; y::m_vecPR.size();d++){ storeResult(d,x,y,PixelRatingGroup::m_vecPR[d]->rate(pt0[i],pt1[i],pt2[i])); } } } } }else{ for(y =oRoi.y; y::m_vecPR.size();d++){ storeResult(d,x,y,PixelRatingGroup::m_vecPR[d]->rate(pt0[i],pt1[i],pt2[i])); } } } } evaluateResults(m_vecFoundBlobs); return m_vecFoundBlobs; } template void ColorBlobSearcher::addPR(PixelRating *pr){ PixelRatingGroup::addPR(pr); pixelRatingAdded(pr); } template void ColorBlobSearcher::removePR(int index){ if( PixelRatingGroup::removePR(index) ){ pixelRatingRemoved(index); } } template void ColorBlobSearcher::feedback(const FoundBlobVector &results, Img *image){ (void)results; (void)image; } template ColorBlobSearcher::~ColorBlobSearcher(){} template void ColorBlobSearcher::pixelRatingAdded(PixelRating *pr){ (void)pr; } template void ColorBlobSearcher::pixelRatingRemoved(int index){ (void)index; } template void ColorBlobSearcher::prepareForNewImage(Img *poImage, Img8u *poMask) { (void)poImage; (void)poMask; } template class ColorBlobSearcher; template class ColorBlobSearcher; }