我提取110个坐标从使用C ++和OpenCV一个10x11的LED阵列的轮廓,并将它们存储在一个载体中。 现在我想将它们从左上角到右下角排序,以检测是否在某一行和列的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。 有没有人对一个可靠的方法来检测他们的想法?