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

来源:互联网 发布:淘宝联盟 退运费 福袋 编辑:程序博客网 时间:2024/04/25 01:11

程序:

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);

0 0
原创粉丝点击