IK
for(uint i = 0; i < (uint)contours.size() ; i++) {
double area = contourArea(contours[i]);
printf("area of countour %d = %f.\n", i, area);
if ((area < 10) || (area > 50))
contours.erase(contours.begin() + i);
}
break;
делай после удаления, либо реверсивно инкрементируй с for (i = size-1; i !=0 --i;)
(как-то так)просто так при удалении изменяется размер массива, и вылетишь за пределы