Seite 1 von 1

OpenCv matchTemplate

Verfasst: Dienstag 22. April 2014, 10:19
von kl.feigling89
Hallo,
wie verwende ich diese Template funktion für Templates unterschiedlicher Breite und Höhe?

Code: Alles auswählen

	regions = cv2.matchTemplate(image,template,cv2.TM_SQDIFF) 
bei gleicher Höhe und Breite klappt alles nur bei ungleicher Höhe und Breite kommt diese Fehlermeldung:

... regions = cv2.matchTemplate(image,template,cv2.TM_SQDIFF)
cv2.error: ..\..\..\opencv-2.4.7\modules\imgproc\src\templmatch.cpp:251: error:(-215) img.rows >= templ.rows && img.cols >=templ.cols

Re: OpenCv matchTemplate

Verfasst: Dienstag 22. April 2014, 10:33
von BlackJack
@kl.feigling89: Es ist nicht einfach nur die ungleiche Höhe/Breite wenn man sich die Bedingung in der Fehlermeldung anschaut, sondern das Bild muss grösser oder gleich gross wie das Template sein. Was ja auch irgendwie Sinn macht, denn wie soll ein *grösseres* Bild in einem *kleineren* enthalten sein? Das geht doch gar nicht‽

Edit: Um mal die Dokumentation der Funktion zum `templ`-Argument zu zitieren: „Searched template. It must be not greater than the source image and have the same data type.”

Re: OpenCv matchTemplate

Verfasst: Dienstag 22. April 2014, 10:42
von kl.feigling89
Ja, aber wenn ich ein Template mit 5x5 nehme funktioniert es. Wenn ich aber das Bild mit einem Template der größe 5x4 durchlaufe, kommt die Fehlermeldung. Das Ausgangsbild was überprüft ist ist auch viel größer!

Re: OpenCv matchTemplate

Verfasst: Dienstag 22. April 2014, 11:05
von BlackJack
@kl.feigling89: Das kann ich nicht nachvollziehen. Kannst Du mal ein minimales, lauffähiges Beispiel zeigen was das Problem aufweist? Der Inhalt der Bilder ist ja egal, da kannst Du einfach Zufallsdaten erzeugen lassen.

Re: OpenCv matchTemplate

Verfasst: Dienstag 22. April 2014, 13:51
von kl.feigling89
So, habe den Fehler gefunden. Ich hatte eine for-Schleife davor, die weiter als das array gezählt hat. Lag somit nicht am Template.