2012-04-03 18 views
0

So habe ich ein Bild, das mit der Sobel-Methode verarbeitet wurde, und jetzt muss ich dieses Bild extrahieren.Scannen Sie ein Bild mit emgu cv

Mein Problem ist, wie kann ich beginnen, das Bild von der Mittellinie UO und Zeile für Zeile zu scannen, und wenn die Anzahl der Kante weniger als 60 ist, notieren Sie diese Koordinate, um das Bild zu beschneiden.

Das fragliche Bild ist ein Barcode, und diese Methode sollte nur zum Extrahieren der Balken verwendet werden. Das Problem ist die Implementierung mit emgu cv.

Update:

ich das Verfahren folgende bin in diesem Papier beschrieben: http://bit.ly/HUWdcy

Diese Frage ist referent zum C. Image Extraction Kapitel

Antwort

0

die cv::threshold und cv::reduce Funktionen prüfen.

Zuerst erstellen Sie eine binäre Karte aus Ihrem Kantenbild, mit Schwarz auf den Streifen und Weiß auf dem Hintergrund.

Gefallen Sie dieses kleine Beispiel:

Nach Kanten

1 70 0 0 85 128 99 0 
1 70 0 0 85 128 99 0 
1 70 0 0 85 128 99 0 
1 70 0 0 85 120 99 0 
1 74 0 0 85 138 99 0 
1 80 0 0 85 128 99 0 
1 72 0 0 85 128 99 0 

Nach Schwelle

0 255 0 0 255 255 255 0 
0 255 0 0 255 255 255 0 
0 255 0 0 255 255 255 0 
0 255 0 0 255 255 255 0 
0 255 0 0 255 255 255 0 
0 255 0 0 255 255 255 0 
0 255 0 0 255 255 255 0 

Zweite Funktion kann verwendet werden, um "Projekt" das Bild auf einem seiner Dimensionen, mit CV_MAX oder CV_SUM oder CV_AVG, und Sie werden die Barcodes in einer Reihe

gespeichert haben

Beispiel für reduce mit SUM:

0 1785 0 0 1785 1785 1785 0 

Jetzt erneut anwenden, eine Schwelle:

0 1 0 0 1 1 1 0 
+0

Dank für die Antwort, aber jetzt mein Problem der Kanten pf den Code zu finden, habe ich das Bild gemacht pro-processing, wie in dem obigen Artikel erwähnt und dann den Sobel-Operator auf das Bild angewendet. Nun, um die Code-Kante zu sehen, denke ich, dass ich von der Mitte des Bildes auf und ab gehen kann und überprüfe, ob Pixel gleich sind, für die Seiten, die ich kenne, beginnen und enden sie mit 101, aber mit dem Pixel, den ich lese, bekomme ich keine solche Sache , nur eine Menge von 0 und dann 1. – celsoap7

+0

und für die ich in Ihrer Antwort sehe, betrachten Sie bereits den Code, ohne Hintergrund und verwenden Sie die Reduce-Methode, um die Matrix in nur einen Vektor zu setzen, mein Problem damit ist, dass ich kann die reduce-Methode in meinem Projekt nicht ausführen, zum Beispiel cvinvoke.cvreduce (...) und img.reduce (...) funktionieren nicht, ich denke, die Parameter, die ich setze, sind falsch, wenn Sie mit helfen könnten wäre großartig. – celsoap7

+0

@ celsoap7 Ich habe weder die Zeit noch die Erfahrung mit Codebalken zu helfen. Ich hoffe, das ist ein Anfang, und ich lade Sie ein, tiefer zu lernen und zu versuchen. – Sam

Verwandte Themen