vector<vector<cv::Point> > contours;
vector<Vec4i> hierarchy;
Mat thresholdOutput;
// Threshold first
threshold( *fingerMatImage, thresholdOutput, thresh, 255, THRESH_BINARY );
// Find contours
findContours( thresholdOutput, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, cv::Point(0, 0) );
vector<vector<cv::Point> > hullsP(contours.size());
double maxArea = 0;
int contourMaxAreaId = -1;
// Find biggest contour
for(int i = 0; i <contours.size(); i++){
// Find the hulls
convexHull(contours[i], hullsP[i], false, true);
// Find the defects
if (contours[i].size() >3 )
{
// Area of the hull
//double area = cv::contourArea(hullsP[i]);
double area = cv::contourArea(contours[i]);
if (area > 1000 && area < 60000 && area > maxArea) {
maxArea = area;
contourMaxAreaId = i;
}
}
}
for( int i = 0; i< contours.size(); i++ )
{
drawContours(*touchesHullsImage, hullsP, i, CV_RGB(255, 255, 255), 1, 8, vector<Vec4i>(), 0, cv::Point());
}