で
おかげで、私はOpenCVの中にはかなり初心者だけど、私はその特定のケースのために、あなたはCV_RETR_TREEで(CV_RETR_EXTERNALフラグをcvFindContoursで動作するはず、と推測、あなたの黄色blobはcvblobを使用する代わりに青色のINになります)。
トラッキングするかどうかによって異なります(cvblobは、カムシフトを実装する代わりに、ブロブをすばやく効率的にトラッキングする方法を提供します)。
CvMemStorage* storage = cvCreateMemStorage(0);
CvSeq* firstContour = cvCreateSeq(CV_SEQ_ELTYPE_POINT, sizeof(CvSeq), sizeof(CvPoint), storage);
cvFindContours(image, storage, &firstContour, sizeof(CvContour), CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE);
// S'il y a un contour
if(firstContour != 0) {
for(CvSeq* c = firstContour; c != NULL; c = c->h_next) {
for(int i = 0; i < c->total; ++i) {
// Get each point of the current contour
CvPoint* pt = CV_GET_SEQ_ELEM(CvPoint, c, i);
double x = pt->x;
double y = pt->y;
}
}
}
輪郭によって与えられた情報を使用すると、ブロブの重心、角度および境界ボックスを容易に見つけることができます。
これらのBLOBのトラッキングは、cvblobが(私が見るように)重複するBLOBを好きではないので、より難しいかもしれません。独自のトラッキング方法を実装する必要があるかもしれません。