2017-02-08 20 views
6

AForgeの円の内側の円を検出しようとしています。 Rectanglesが正常に確定しましたが、がRectangleに見つかりませんでした。 AForgeで別の図形内の図形を見つける方法AForge内の円内の円を見つける方法

string strPath = Server.MapPath("~/Recipt001.png"); 
Bitmap myBitmap = new Bitmap(strPath); 

//Some filters Grayscale, invert, threshold 

//Blod Filtering      


BlobCounter blobCounter = new BlobCounter(); 
blobCounter.ProcessImage(temp); 
blobCounter.ObjectsOrder = ObjectsOrder.YX; 
blobCounter.FilterBlobs = true; 

Blob[] blobs = blobCounter.GetObjectsInformation(); 
Graphics g = Graphics.FromImage(myBitmap); 
Pen redPen = new Pen(Color.Red, 2); 
SimpleShapeChecker shapeChecker = new SimpleShapeChecker(); 

// dictionary of color to highlight different shapes 
Dictionary<PolygonSubType, Color> colors = new Dictionary<PolygonSubType, Color>(); 

colors.Add(PolygonSubType.Unknown, Color.White); 
colors.Add(PolygonSubType.Trapezoid, Color.Orange); 
colors.Add(PolygonSubType.Parallelogram, Color.Red); 
colors.Add(PolygonSubType.Rectangle, Color.Green); 
colors.Add(PolygonSubType.Square, Color.Blue); 
colors.Add(PolygonSubType.Rhombus, Color.Gray); 

colors.Add(PolygonSubType.EquilateralTriangle, Color.Pink); 
colors.Add(PolygonSubType.IsoscelesTriangle, Color.Purple); 
colors.Add(PolygonSubType.RectangledTriangle, Color.SkyBlue); 
colors.Add(PolygonSubType.RectangledIsoscelesTriangle, Color.SeaGreen); 

for (int i = 0, n = blobs.Length; i < n; i++) 
{ 
    List<IntPoint> corners; 
    List<IntPoint> edgePoints = blobCounter.GetBlobsEdgePoints(blobs[i]); 
    Point center; 
    double radius; 

    if (shapeChecker.IsQuadrilateral(edgePoints, out corners)) 
    { 
     if (shapeChecker.CheckPolygonSubType(corners) == PolygonSubType.Rectangle) 
     { 
      g.DrawPolygon(redPen, ToPointsArray(corners)); 
     } 
    } 
} 

redPen.Dispose(); 
g.Dispose(); 
+0

円の周りに角がある正方形を作っているように見えます。円は四角形の外側にあり、四角形の内側に円が必要です。 – jdweng

+0

@jdwengいいえ、私は長方形を認識しました。今、それらの四角形には円があります。今私はその円を長方形の中に入れたいと思っています。 –

+0

@jdweng私は、テスト目的のために検出された矩形にポリゴンをドゥーワンしています。今度はそれらの形の中に円があります。 –

答えて

1

画像処理ライブラリのいずれとMATLABでさえも画像処理では、ROI内のROI( - 四角形や円などの intrestの地域ROI)を検索することができますありません。コンセプトはクロップ地方 - >地域内のオブジェクトを検索

したがって、最初に一次矩形を見つけてから、イメージを四角形にクロップし、それらの中でサークル検索を実行します。それ以外の場合は、すべての円とすべての矩形を検索し、円を単純な数式を使ってどの矩形に属するかを分類します。

+0

私はすでにこの解決策を行っています。私は長方形を見つけました。私はそれを画像から切り取って、その画像をサークル用に処理しています。しかし、私はAForgeのソリューションを探しています。私は、Aforgeがこの問題を直接的に解決するのではなく、この問題を直接解決できるのだろうかと思います。 –

+0

これはハックではなく、これはライブラリの設計方法です。だからあなたは正しい道を見つけたことを悟りましょう。 – SACn

+0

ありがとうございました:)私はAForgeを探してフォーラムを読んで、どのようにこの行動を取るのか詳細を調べています。 –

関連する問題