4

現在、マーカーを検出するためにカメラを使用しています。opencv と Aruco ライブラリを使用しています。

私だけが今問題に悩まされています。2 つのマーカー間の距離が特定の値より小さいかどうかを検出する必要があります。距離を計算する機能があり、すべてを比較できます。しかし、すべてのマーカー (約 5/6) とそれらがどれだけ近いかを追跡する最も効率的な方法を探しています。

マーカー付きのリストがありますが、それらすべてを効率的に比較する方法が見つかりません。

私は

Vector <Marker> 

という関数もありますgetDistance

double getDistance(cv::Point2f punt1, cv::Point2f punt2)
{
    float xd = punt2.x-punt1.x;
    float yd = punt2.y-punt1.y;
    double Distance = sqrtf(xd*xd + yd*yd);
    return Distance; 
}

Markers には が含まれているのでPoint2f、簡単に比較できます。

4

3 に答える 3

8

パフォーマンスを向上させる 1 つの方法は、すべての距離を 2 乗し、平方根関数を使用しないようにすることです。チェックしている特定の値を二乗すると、これはうまくいくはずです。

于 2014-06-03T17:55:23.600 に答える