gpt4 book ai didi

c++ - OpenCV C++ : Sorting contours by their contourArea

转载 作者:可可西里 更新时间:2023-11-01 15:36:33 27 4
gpt4 key购买 nike

如何根据等高线区域的大小对等高线进行排序?我怎样才能得到最大/最小的?

最佳答案

您可以使用 std::sort使用自定义比较函数对象

// comparison function object
bool compareContourAreas ( std::vector<cv::Point> contour1, std::vector<cv::Point> contour2 ) {
double i = fabs( contourArea(cv::Mat(contour1)) );
double j = fabs( contourArea(cv::Mat(contour2)) );
return ( i < j );
}

用法:

[...]

// find contours
std::vector<std::vector<cv::Point> > contours;
std::vector<cv::Vec4i> hierarchy;
cv::findContours( binary_image, contours, hierarchy, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE, cv::Point(0, 0) );

// sort contours
std::sort(contours.begin(), contours.end(), compareContourAreas);

// grab contours
std::vector<cv::Point> biggestContour = contours[contours.size()-1];
std::vector<cv::Point> smallestContour = contours[0];

关于c++ - OpenCV C++ : Sorting contours by their contourArea,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13495207/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com