OpenCv matchTemplate

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
kl.feigling89
User
Beiträge: 42
Registriert: Montag 24. Februar 2014, 14:47

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
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.”
kl.feigling89
User
Beiträge: 42
Registriert: Montag 24. Februar 2014, 14:47

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!
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.
kl.feigling89
User
Beiträge: 42
Registriert: Montag 24. Februar 2014, 14:47

So, habe den Fehler gefunden. Ich hatte eine for-Schleife davor, die weiter als das array gezählt hat. Lag somit nicht am Template.
Antworten