通过X和Y查找数组中点的索引

时间:2014-03-08 11:12:05

标签: c# opencv

我在数组中找到/ soritng点时遇到问题。当我想找到最接近基点(0,0)的点时:

CvPoint2D32f[] corners;
...
Cv.FindChessboardCorners(...)
...
int min = Array.IndexOf(corners, corners.Min(p => p.X + p.Y));

并且我正在尝试显示该点的索引 - 我在textBox上获得“-1”值,就像数组为空。

实际上它不是,因为我可以显示一个元素,例如:。

this.textBox1.Text = Convert.ToString(corners[0]);

我进入了textBox:

CvPoint2D32f (x:179,143 y:60,15205)

1 个答案:

答案 0 :(得分:0)

你找不到它,因为Min返回此实例中的总和而不是对象,因此返回-1结果。

你必须自己循环......

private int IndexOfMinPoint(CvPoint3D32f[] points) {
    int lowestValue = points[0].x + points[0].y;
    int lowestValueIndex = 0;

    for (int i = 1; i < points.length; i++) {

        int newLowestValue = points[i].x + points[i].y;

        if ( newLowestValue < lowestValue) {
             lowestValue = newLowestValue;
             lowestValueIndex = i;
        }

    }

    return lowestValueIndex;    
}