Эквивалент OpenCv c ++ api Vec2f, norm, acos в emgucv csharp - PullRequest
0 голосов
/ 18 июня 2020

Вот OpenCV api в c ++.

Vec2f
norm
acos

Пожалуйста, предложите, что будет c# эквивалентным api в emgucv?

Заранее спасибо.

1 Ответ

1 голос
/ 19 июня 2020

Vec2f

В зависимости от вашего приложения вы можете просто использовать System.Drawing.PointF, двумерную точку с плавающей точкой для хранения I и J как X и Y. Однако это не будет поддерживать некоторые функции opencv, которые вы можете использовать. В этом случае Vec2f - это просто матрица 1 на 2 из float, для этого вы можете использовать:

Matrix<float> myVec2F = new Matrix<float>(1, 2);

В качестве бонуса используйте этот класс, если хотите:

public class Vec2F: Matrix<float>
{
    public float I
    {
        get { return base[0, 0]; }
        set { base[0, 0] = value; }
    }

    public float J
    {
        get { return base[1, 0]; }
        set { base[1, 0] = value; }
    }

    public Vec2F() : base(2, 1) { }

    public Vec2F(float I, float J) : base(2,1)
    {
        this.I = I;
        this.J = J;
    }
}

Используется как:

Vec2F myVec2F = new Vec2F();

Norm

В контексте 2D-векторов это просто Пифагор для определения величины, однако, если вы использовали Matrix<float> выше, теперь он поддерживает myVec2F.Norm.

Acos

System.Math.Acos() ... просто.

...