Bestimmen Sie, ob ein Bild vorhanden ist, in einem größeren Bild, und wenn dem so ist, finden es, mit Python

Brauche ich ein Python-Programm, dass ich arbeite, um in der Lage sein zu nehmen, ein kleines Bild, bestimmt, wenn es existiert, in einem größeren Bild, und wenn dem so ist, meldet seine Position. Wenn nicht, melden, die. (In meinem Fall das große Bild wird ein screenshot, und das kleine Bild ein Bild, das möglicherweise oder möglicherweise nicht auf dem Bildschirm, die in einem HTML5-canvas.) Suchen Sie on-line, fand ich heraus, über template-matching in OpenCV, die in der Tat hervorragende Python-bindings. Ich habe versucht, die folgenden, basierend auf sehr ähnlichen code, den ich gefunden auf Linie mit numpy sowie:

import cv2
import numpy as np
image = cv2.imread("screenshot.png")
template = cv2.imread("button.png")
result = cv2.matchTemplate(image,template,cv2.TM_CCOEFF_NORMED)
StartButtonLocation = np.unravel_index(result.argmax(),result.shape)

Dieser nicht tut, was ich brauche, es zu tun, denn es gibt IMMER einen Punkt in dem größeren Bild, dem Punkt, wo das Spiel am nächsten ist, egal wie schrecklich ein Spiel es ist. Ich etwas will, der findet eine genaue, pixel für pixel entsprechen, der das kleinere Bild im größeren Bild, und wenn keiner vorhanden ist, wirft Sie eine Ausnahme, oder gibt False oder sowas. Und es muss Recht schnell erfolgen. Hat jemand eine gute Idee, wie dies zu tun?

  • Eine kurze Frage: kann man davon ausgehen, dass Ihre small Bild erscheint in der large Bild immer in Originalgröße und genau mit Ihrem original-Werte? Oder müssen Sie den Umgang mit Variablen Größe small Bilder, die möglicherweise interpolated und Griff illumination - Variationen? Ich meine, Sie erwähnen exact match ist es wirklich genau?
  • Sind Sie garantiert IMMER PNG format? Ich Frage beause JPEGs Unterziehen Quantisierung verlustfreie Kompression und verlustbehaftete Kompression und Dinge, die scheinbar identisch können unterscheiden sich in Ihrer internen Darstellung.
InformationsquelleAutor clj | 2015-04-16
Schreibe einen Kommentar