2017-02-08 41 views
6

AForge'da Dikdörtgen İçindeki Daire'yi tespit etmeye çalışıyorum. Rectangles'u başarıyla belirledim, ancak Rectangle içinde circles'u bulamadım. AForge'da başka bir şekil içinde şekil nasıl bulunur. (- dikdörtgenler veya daireler gibi intrest bölgesini ROI)AForge İçinde Dikdörtgen İçinde Daire Bulmak

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

Bir dairenin çevresinde köşeleri olan bir kare yapmaya çalışıyorsunuz gibi görünüyor. Çember daha sonra meydanın dışına çıkacak ve karenin iç tarafında olacak daireye ihtiyacınız olacak. – jdweng

+0

@jdweng Hayır, dikdörtgenler tanıdım. Şimdi bu dikdörtgenlerin içlerinde daireler var. Şimdi bu çemberleri dikdörtgen içine almak istiyorum. –

+0

(jdweng) Sadece test amaçlı olarak tespit edilen dikdörtgenler üzerinde çokgen var. Şimdi bu şekiller içlerinde daireler var. –

cevap

1

görüntü işleme kütüphaneleri hiçbiri ve MATLAB'ta bile görüntü işleme YG içindeki bir YG arama sağlar. > ARAMA Yani ilk dikdörtgenler için bundan sonra birincil dikdörtgenler, kırpma görüntü bulmak ve içlerinde daire arama yapmak

BÖLGENİN nesneleri - Konsept ÜRÜN BÖLGESİ olduğunu. Aksi takdirde, tüm çevreleri ve tüm dikdörtgenleri arayın ve ardından basit matematik kullanarak hangi dikdörtgene ait olacağınıza dair çevreleri sınıflandırın.

+0

iyi zaten bu çözümü yaptım. Dikdörtgenler buldum. Onu bir görüntüden kırpıyorum ve bu görüntü üzerinde daireler için işlem yapıyorum. Ama ben AForge'da çözüm arıyorum. Aforge'un bu sorundan ziyade bu soruna çözüm getirebileceğini merak ediyorum. –

+0

Bu bir Hack değil, kütüphanelerin tasarlandığı yoldur. Bu yüzden aydınlanın doğru yolu buldunuz. – SACn

+0

Çözümünüz için teşekkür ederiz :). AFOR'u araştırıyorum ve forumlarını okuyorum ve bu davranışı nasıl ele aldıklarını detaylı olarak araştırıyorum. –

İlgili konular