I am working on software using OpenCV in C++ environment. The objective is to detect a boxing glove and draw a bounding box around gloves contours.
You currently draw a bounding box around each contour, and findContour will find a contour around each connected white or black component, of which there are many in your picture.
So the first thing I would do is filter all that noise with some morphological operations on the thresholded image: do some opening and closing, both of which are combinations of dilation and erosion.
In your case something like cvDilate (2 times); cvErode(4 times); cvDilate(2 times)
This should merge all white blobs into one smooth blob, but the black hole in the middle will remain. You could find the right one by size, but it is easier to call findContours with the CV_RETR_EXTERNAL instead of CV_RETR_TREE, then it will only return the outermost contours.