使用背景
在机器视觉项目中,要对一组视觉坐标(x,y)经行排序,如N点标定的时候。如下图:
我们需要对图是黑色圆点的中心坐标进行:先按x升序排序,再按y经行降序排序。经过两轮排序后,我们将会得到一组有序的坐标点集。
如何使用
关键代码如下:
class VistionPosition
{
public VistionPosition(double _x, double _y)
{
x = _x;
y = _y;
}
public double x { get; set; }
public double y { get; set; }
}
List<VistionPosition> lst = new List<VistionPosition>();
lst.Sort((a,b)=>a.y.CompareTo(b.y));//对lst进行y升序的排序,关键的表达式(a,b)
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
var temp = lst.Take(3).OrderBy(a=>a.x).ToList();//返回前三个元素,按y
lst = lst.Skip(3).ToList();
resultList.AddRange(temp);
}
}
总结
该排序算法可以用于激光标定中的N点标定,可以做到一键标定。