您的位置:首页 > 其它

求mat的连通域,并只显示最大轮廓的连通域

2016-05-10 10:09 155 查看
程序:

cv::namedWindow("result", 0);

cv::imshow("result", result);

cv::imwrite("result.jpg", result);

std::vector<std::vector<cv::Point>> contours;

vector<Vec4i> hierarchy;

cv::findContours(image_gray, contours, hierarchy, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE);// CV_RETR_EXTERNAL CV_RETR_CCOMP

cv::Mat result(image_gray.size(), CV_8U, cv::Scalar(0));

int index;

double area, maxArea(0);

for (int i = 0; i < contours.size(); i++)

{

area = contourArea(Mat(contours[i]));

if (area > maxArea)

{

maxArea = area;

index = i;

}

}

drawContours(result, contours, index, Scalar(255), 2);

std::cout << " Area " << area << std::endl;

cv::namedWindow("Contours", 0);

cv::imshow("Contours", result);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: