Finds an object on a back projection image.
-
C++:
int
meanShift
(InputArray
probImage, Rect&
window, TermCriteria
criteria
)
-
-
Python:
cv2.
meanShift
(probImage, window, criteria
) → retval, window
-
-
C:
int
cvMeanShift
(const CvArr*
prob_image, CvRect
window, CvTermCriteria
criteria, CvConnectedComp*
comp
)
-
-
Python:
cv.
MeanShift
(prob_image, window, criteria
) → comp
-
Parameters: - probImage – Back projection of the object histogram. See calcBackProject() for details.
- window – Initial search window.
- criteria – Stop criteria for the iterative search algorithm.
Returns: Number of iterations CAMSHIFT took to converge.
The function implements the iterative object search algorithm. It takes the input back projection of an object and the initial position. The mass center in window of the back projection image is computed and the search window center shifts to the mass center. The procedure is repeated until the specified number of iterations criteria.maxCount is done or until the window center shifts by less than criteria.epsilon . The algorithm is used insideCamShift() and, unlikeCamShift() , the search window size or orientation do not change during the search. You can simply pass the output ofcalcBackProject() to this function. But better results can be obtained if you pre-filter the back projection and remove the noise. For example, you can do this by retrieving connected components withfindContours() , throwing away contours with small area (contourArea() ), and rendering the remaining contours withdrawContours() .
Note
- A mean-shift tracking sample can be found at opencv_source_code/samples/cpp/camshiftdemo.cpp