Wie finde ich ein Bild innerhalb eines anderen?
Habe ich 2 bmp-Bilder.
ImageA ist ein screenshot (Beispiel)
ImageB ist eine Teilmenge von, die. Sagen Sie zum Beispiel, ein Symbol.
Möchte ich finden, der X,Y-Koordinaten der ImageB innerhalb ImageA (wenn es existiert).
Irgendeine Idee, wie ich das machen würde?
Kommentar zu dem Problem
Kannst du die zwei BMP-Bilder hier?
InformationsquelleAutor der Frage esac | 2010-03-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn die Antworten auf die ersten beiden Fragen sind Keine und ja, dann haben Sie ein problem. Es hilft auch zu wissen, die Antwort auf Q3.
Update:
Die Grundidee ist: statt passend zu einem Fenster um jedes pixel in imageB jedes pixel mit in imageA und die überprüfung der Korrelation, lassen Sie uns identifizieren, Punkte von Interesse (oder Funktionen) in beiden Bildern werden verfolgbar. So wie es aussieht Ecken sind wirklich nachvollziehbar, da das Gebiet um Sie herum ist irgendwie ähnlich (nicht ins Detail zu gehen) - daher finden wir einige wirklich starke Ecken in beiden Bildern und die Suche nach Ecken, das sehen die meisten ähnlich.
Dies reduziert das problem der Suche jedes pixel in B mit Ein, um die Suche für, sagen wir, 500 Ecken in B mit 1000 Ecken in A (oder so ähnlich) - sehr viel schneller.
Und die großartige Sache ist, Sie haben mehrere solche Ecke Detektoren zur Verfügung, in OpenCV. Wenn Sie nicht das Gefühl, mit emguCV (C# varriant), dann verwenden Sie die SCHNELL Detektor hier finden Sie die passenden Ecken und so suchen Sie über mehrere Funktionen, die zwischen Ihren Bildern. Sobald Sie dass haben, können Sie die Position der oberen linken Ecke des Bildes.
InformationsquelleAutor der Antwort Jacob
Hier ist eine schnelle Probe, aber es ist langsam, dauert etwa 4-6 Sekunden, aber es tut genau das, was Sie suchen, und ich weiß, dieser Beitrag ist alt, aber wenn jemand anderes den Besuch dieser Beitrag vor kurzem
Sie können sich dieses Ding
Sie müssen .NET AForge framework-namespace oder google es und installieren Sie es
gehören AForge Namespace in Ihr Projekt und das ist es
es findet die pictiure mit einem anderen und gibt die Koordinaten.
InformationsquelleAutor der Antwort Mandah Mr.
Wenn das Bild B ist ein genaue Teilmenge von Bild (was bedeutet, die pixel-Werte sind genau gleich), ist dies nicht ein Bild-Verarbeitung problem, es ist nur die Zeichenkette in 2D. In 99% der Fälle, wobei eine Linie bilden die Mitte von B und Abgleich gegen jede Zeile von A wird tun, was Sie wollen, und super schnell &mdhas, ich denke mal C# hat eine Funktion für, die. Nachdem Sie Ihre Spiele (in der Regel ein paar von Ihnen), überprüfen Sie die gesamte B gegen den entsprechenden Teil A.
Das einzige problem, das ich sehe ist, dass in einigen Fällen können Sie bekommen zu viele Spiele. E. g. wenn Sie Ihren desktop, B ist ein Symbol, und Sie sind unglücklich genug, um eine Zeile in B, bestehend aus nur mit dem hintergrund. Dieses problem ist leicht zu lösen (Sie müssen wählen Sie die Zeilen aus B ein wenig mehr sorgfältig), aber dies hängt von den Besonderheiten Ihres Problems.
InformationsquelleAutor der Antwort AVB
Suche nach sub-Bilder in einem Bild
Finden Sie ein Bild in einem Bild
Prüfen Sie, ob ein Bild vorhanden ist, in einem anderen Bild
InformationsquelleAutor der Antwort SwDevMan81