排序坐标从左上到右下
Sort Coordinates from top left to bottom right
我使用c++和OpenCV从10x11 led阵列的轮廓中提取了110个坐标,并将它们存储在矢量中。现在我想从左上到右下对它们进行排序,以检测某个行和列中的LED是否打开。我将坐标按y轴位置排列,以确保向量中的前10个坐标代表图像中的第一个LED行。
vector<Point2f> centers;
bool compareY(Point2f p1, Point2f p2){
if(p1.y < p2.y) return true;
if(p1.y > p2.y) return false;
}
sort(centers.begin(), centers.end(), compareY);
现在我必须按x位置对它们排序。问题是,从第二行或任何其他行的第一个LED的x位置可以比第一行的第一个LED小一点。由于这个事实,它们必须从中心[0]到中心[9],从中心[10]到中心[20]排序……一行一行地。有人知道怎么做吗?
提前感谢!
编辑:设法对点进行排序,但我的基于轮廓检测的算法不够健壮,无法检测所有led。有没有人想到一个可靠的方法来检测它们?
如果您想按Y坐标和X坐标执行字典排序,您只需要提供一个合适的比较函数,它真正实现了严格的弱排序。例如
#include <tuple>
bool compareYX(const Point2f& p1, const Point2f& p2)
{
return std::tie(p1.y, p1.x) < std::tie(p2.y, p2.x);
}
还可以手动实现字典顺序比较,但这很容易出错。
相关文章:
- 二叉排序树无法编译
- QGraphicsPolygonItem在拖动时未更新QPolygonF坐标
- 仅使用绝对值对数组进行排序,并在C++中显示实际值
- 使用C++中的链表对与原点的距离、x 和 y 坐标进行排序
- 对坐标结构的向量进行排序
- 如何按坐标 x 或坐标 y 对 QGraphicsitem 的 QList 进行排序
- 在 c++ 中对插值的坐标进行排序和搜索
- 对坐标 c++ 的向量进行排序
- 根据点的坐标对点进行排序
- 如何按距点的距离(x1,y1)升序对一组坐标进行排序
- 对抛物线的坐标 (x,y) 进行排序 y=ax^2+bx+c x=x1,x2,x3, x4.根据 y 坐标
- 坐标的排序向量C++
- C++对指针向量进行排序,其中对象表示矩阵坐标
- 坐标的排序
- Make_heap和排序x和y坐标
- 基于 x 和 y 坐标进行排序
- 排序坐标从左上到右下
- 以蛇形图案排序点坐标
- 如何使用std::sort按x坐标对结构进行排序
- 排序屏幕坐标