2012-09-11 12 views
5

Ich bin grundsätzlich Barcodes mit einer Open-Source-Software zu verarbeiten. Manchmal erkennt das Tool jedoch überhaupt keinen Barcode.Erkennen von leeren Bildern (das Bild ist ein Barcode erwartet) in C#

Also ich möchte mich selbst überprüfen, ob das Bild wirklich leer war oder es eine Art Strichcode enthält.

Meine Bilder werden durch Scannen erzeugt und sie enthalten nur einen Strichcode (wenn sie nicht leer sind) und einige Rauschbilder, die beim Scannen entstehen. Also könnte mein Problem sogar darin bestehen, zu prüfen, ob das Bild eine erhebliche Menge an konzentrierten schwarzen Pixeln enthält, um es von weißen Bildern mit Rauschen zu unterscheiden.

Ich habe this SO Frage überprüft, aber der Vorschlag war, "probabilistic Hough line transform" zu verwenden, die ich ein wenig ein Overkill für meine Situation fand.

Ich habe auch this ausgecheckt, aber es hat unsicheren Code. Ich suche eine verwaltete C# -Lösung.

Antwort

0

Das zweite Beispiel, das Sie verknüpft haben, verwendet unsafe Code nur, um den Zugriff auf Pixelwerte in Ihrer Bitmap zu beschleunigen. Sie können all das einfach ersetzen, indem Sie stattdessen die BitmapGetPixel() Methode verwenden (der Nachteil ist, dass dies dann extrem langsam ist, aber es wird wahrscheinlich immer noch schnell genug für Ihre Zwecke sein).

Soweit der Code unsafe geht, gibt es jedoch keinen Grund zur Sorge über die Verwendung. Das einzige Problem mit dem Tag unsafe ist, dass einige Benutzer (abhängig von ihren Berechtigungsstufen) möglicherweise nicht in der Lage sind, den Code auszuführen, obwohl ich dieses potentielle Problem nie selbst erlebt habe.

+1

Es gibt eine Mitte zwischen 'GetPixel()' und 'unsicheren 'Zeigerarithmetikcode, und das ist die' Marschall' Klasse. Siehe zum Beispiel diese Antwort: http://stackoverflow.com/a/1563170/860585 – Rotem

0

Sie könnten diese C# -Bibliothek OpenSURF verwenden und den Wert für den SURF-Funktionsdeskriptorvektor betrachten. Ich bin mir nicht sicher, ob es "sicher" ist