3

現時点では、画像内のエッジを検出しており、ハフ変換を使用してエッジから線分を抽出することを計画しています。セグメントを取得したら、2 つのセグメントが交差するコーナーを見つけることを計画しています。角から長方形を検出できるアルゴリズムはありますか? 4 つの角が検出されたとします。長方形に 4 つの直角があることを知って、4 つの角が構成する長方形の辺の相対的な長さを取得することは可能ですか?

これを行う理由は、四角形で囲まれたテクスチャを抽出し、画面上で平らな四角形として描画できるようにするためです。

編集:これまでの回答に感謝します。少し誤解されていると思うので、問題をより明確に説明する必要があると思います。私は実際に歪んだ長方形を平らな長方形に変換しようとしています。私はいくつかの aforge 記事を読み、この機能を見ました: link。四隅だけで四角形の辺の比率がわかるのかな?

4

3 に答える 3

0

この兄弟を試してみてください:

http://www.emgu.com/wiki/index.php/Shape_(Triangle,_Rectangle,_Circle,_Line)_Detection_in_CSharp

コーディングを楽しんでください:)

于 2011-11-17T22:11:00.113 に答える
0

彼女は、AForge.NET Framework を使用して画像内の四角形を検出するために使用できるコードです。

// get angles between 2 pairs of opposite sides
float angleBetween1stPair = Tools.GetAngleBetweenLines(corners[0], corners[1], corners[2], corners[3]);
float angleBetween2ndPair = Tools.GetAngleBetweenLines(corners[1], corners[2], corners[3], corners[0]);

// check 1st pair for parallelism
if (angleBetween1stPair <= angleError)
{
    subType = PolygonSubType.Trapezoid;

    // check 2nd pair for parallelism
    if (angleBetween2ndPair <= angleError)
    {
        subType = PolygonSubType.Parallelogram;

        // check angle between adjacent sides
        if (Math.Abs(Tools.GetAngleBetweenVectors(corners[1], corners[0], corners[2]) - 90) <= angleError)
            subType = PolygonSubType.Rectangle;

        //get length of 2 adjacent sides
        float side1Length = (float)corners[0].DistanceTo( corners[1] );
        float side2Length = (float)corners[0].DistanceTo( corners[3] );

        if (Math.Abs(side1Length - side2Length) <= maxLengthDiff)
            subType = (subType == PolygonSubType.Parallelogram) ? PolygonSubType.Rhombus : PolygonSubType.Square;
    }
}
else
{
    // check 2nd pair for parallelism - last chence to detect trapezoid
    if (angleBetween2ndPair <= angleError)
    {
        subType = PolygonSubType.Trapezoid;
    }
}

さまざまな形状を検出する方法の例については、この記事を参照してください:
http://www.aforgenet.com/articles/shape_checker/

AForge.NET Framework をダウンロードするためのリンクは次のとおりです:
http://www.aforgenet.com/framework/downloads.html

于 2011-10-25T23:29:17.960 に答える