2016-07-02 35 views
0

Ich bin ein Anfänger in opencv mit Python. Ich habe viele 16-Bit-Graustufenbilder und muss jedes Mal das gleiche Objekt in den verschiedenen Bildern erkennen. Erprobter Template-Abgleich in opencv python, musste aber verschiedene Templates für verschiedene Bilder erstellen, was nicht wünschenswert sein könnte. Kann jemand mir irgendeinen Algorithmus in Python vorschlagen, um es effizient zu machen?opencv-python objekterkennung

+1

siehe: [Gibt es eine weniger restriktive Stack Exchange Site speziell für nicht zu spezifische Fragen?] (Http://meta.stackoverflow.com/questions/252777/is-there- a-less-restrictive-stack-exchange-site-speziell-geeignet-für-nicht-zu-spe) – nlloyd

+0

bist du noch auf der Suche nach einer Antwort? – user1269942

+0

Ich würde vorschlagen ** Gaussian pyramiding ** –

Antwort

0

Ihre Frage ist viel zu allgemein. Feature-Matching ist ein sehr weites Feld. Die Art des zu verwendenden Algorithmus hängt vollständig von dem zu erkennenden Objekt, seiner Umgebung usw. ab.

Wenn Ihr Objekt also nicht seine Größe oder seinen Winkel im Bild ändert, dann verwenden Sie Template Matching.

Wenn das Bild seine Größe und Ausrichtung ändert, können Sie SIFT oder SURF verwenden.

Wenn Ihr Objekt eindeutige Farbmerkmale aufweist, die sich von seinem Hintergrund unterscheiden, können Sie die Methode hsv verwenden.

Wenn Sie eine Gruppe von Bildern als Objekt klassifizieren müssen, zum Beispiel alle Cricket Fledermäuse sollten erkannt werden, dann können Sie eine Reihe von positiven Bildern trainieren, um dem Computer zu sagen, wie das Objekt aussieht und negatives Bild zu sagen, wie Es ist nicht möglich, es kann mit Haartraining durchgeführt werden.

0

können Sie die Schiebefenstermethode ausprobieren. Wenn Ihr Objekt in allen Beispielen identisch ist

0

Eine Möglichkeit, dies zu tun, besteht darin, nach bekannten Farben, Formen und Größen zu suchen.

Sie durch Ausführen einen HSV Schwelle auf dem Bild beginnen könnten, durch Ihr Bild HSV-Farbraum konvertieren und dann

cv2.inRange(source, (minHue, minSat, minVal), (maxHue, maxSat, maxVal)) 

Nächsten Aufruf, könnten Sie cv2.findContours verwenden, um alle Bereiche in Ihrem Bild zu finden, die Ihre Farbanforderungen. Dann könnten Sie Methoden wie boundingRect und contourArea verwenden, um bestimmte Attribute des gewünschten Objekts zu finden.

Was Sie am Ende erhalten, ist im Wesentlichen eine "Pipeline", die einen Rahmen aufnehmen kann und nach einer Form sucht, die den von Ihnen festgelegten Kriterien entspricht. Abhängig von der Komplexität dessen, was Sie tun möchten (Sie haben nicht gesagt, was Sie suchen), kann dies funktionieren oder nicht, aber ich habe es mit angemessenem Erfolg verwendet.

GRIP ist eine Anwendung, mit der Sie Schwellenwerte in einer visuellen Weise, und es wird auch Python-Code für Sie generieren, wenn Sie möchten. Ich empfehle den generierten Code nicht so wie er ist, da ich auf diese Weise auf einige Probleme gestoßen bin. Hier ist der Link zu GRIP: https://github.com/WPIRoboticsProjects/GRIP

Verwandte Themen