Improve coverage of BackgroundSubtractorMOG2 and findContours
I'm not an expert in this field, but have you tried eroding and then dilating?
I'm writing a python application to track tennis players in the court, and what I did in order to get a single contour for the players is to erode and dilate the tracked shapes.

erosion = cv2.erode(img,None,iterations = 1);
dilation = cv2.dilate(erosion,None,iterations = 1);
cv2.findContours( dilation.copy(), cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE);


or you can directly call the function

opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel);
cv2.findContours( opening.copy(), cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE);


Source: OpenCv Morphological Transformations