オブジェクトがあり、その正確な中心を定義したいと考えています。OpenCV を使用してエッジを検出しCanny
、次にHoughLinesP
行を検出します: this を参照してください。
オブジェクトが完全な長方形ではなく、ここで検出されるバンプがある場合があるため、ハフ変換を使用します。
行は構造体で定義されます。中点、角度、長さも計算します。
struct hLine {
Point pStart, pEnd, pMidpoint;
float angle;
int length;
};
ご覧のとおり、側面に沿って複数の線が検出されています。
問題は、長方形の各辺 (この場合は 0、1、3、4) の最長の線を取得する方法です。
私が試したアプローチは、線の方程式y = kx + nを計算し、線を角度、長さ、nで並べ替え、 nがいくつかの数 (長方形の反対側) で区切られている線のみを保持することでした。垂直線に問題があり(nを計算できません)、オブジェクトがほぼ垂直な場合でもn数が大きいため、線は削除されません。
次のステップは、線の交点を計算してから中心を計算することです。アイデアはこのチュートリアルに基づいています: opencv-code.com/tutorials/automatic-perspective-correction-for-quadrilateral-objects/
また、誰かが正確な中心点を検出するためのより良い解決策を持っている場合は、声を上げてください:)