gpt4 book ai didi

对二维点数组进行排序以找出四个角

转载 作者:太空宇宙 更新时间:2023-11-03 22:05:28 25 4
gpt4 key购买 nike

您好,我收集了任意大小的 2d 点。通过查找原点之间距离的最小值和最大值,我可以找出左上角和右下角的点,但我无法找到找出右上角和左下角。

最佳答案

也许您可以使用 cv::approxPoly() 来查找您的二维点集的角点。然后您可以按照以下方式按您想要的任何顺序对点进行排序:

//Sorts a vector of 4 points into top left, top right, bottomleft, bottomright
vector<Point> sortPoints(vector<Point> unsorted) {
vector<Point> sorted;
for (int i = 0; i < 4; i++)sorted.push_back(Point(0, 0));
int middleX = (unsorted[0].x + unsorted[1].x + unsorted[2].x + unsorted[3].x) / 4;
int middleY = (unsorted[0].y + unsorted[1].y + unsorted[2].y + unsorted[3].y) / 4;
for (int i = 0; i < unsorted.size(); i++) {
if (unsorted.at(i).x < middleX && unsorted.at(i).y < middleY)sorted[0] = unsorted.at(i);
if (unsorted.at(i).x > middleX && unsorted.at(i).y < middleY)sorted[1] = unsorted.at(i);
if (unsorted.at(i).x < middleX && unsorted.at(i).y > middleY)sorted[2] = unsorted.at(i);
if (unsorted.at(i).x > middleX && unsorted.at(i).y > middleY)sorted[3] = unsorted.at(i);
}
return sorted;
}

关于对二维点数组进行排序以找出四个角,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25051723/

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