Attualmente, in C#, sto cercando di capire un modo per trovare uno schema specifico in un'immagine grande, uno screenshot. È necessaria una corrispondenza del 100%, quindi il problema è abbastanza semplice.Corrispondenza modello immagine (se esistono coordinate di ritorno)
prova materiale: http://www.myhideout.eu/temp/pattern.png (NB: i pixel trasparenti sono irrilevanti e non devono essere testati.) http://www.myhideout.eu/temp/test.png
Se viene trovato un modello, avrò bisogno di una sorta di coordinare in modo so dove, ma è la parte facile.
L'unico approccio che ho escogitato finora è l'ovvio. Prendi il primo pixel del pattern e itera l'immagine di prova fino a trovare una corrispondenza, quindi prova il resto del pattern fino a quando il test fallisce o non c'è più pattern. Se il test fallisce, vai al pixel successivo che corrisponde al primo pixel del pattern e riprova. Se si esegue l'immagine di prova senza una corrispondenza, ovviamente non esiste un tale modello e questo dovrebbe essere il risultato del test.
La teoria funziona, ma in realtà le cose sono un po 'più complicate. Non ho ancora trovato un modo corretto di strutturare il codice e i test case che ho fatto hanno avuto alcuni bug piuttosto strani, il che non è una grande sorpresa considerando la complessità.
Tuttavia, la mia più grande preoccupazione è il tempo. Questa è solo una piccola parte di un lungo processo e l'obiettivo è portare il tempo di esecuzione totale a un paio di secondi. Immagina un'immagine 1920 * 1200, che è circa il limite, dove il modello è alla fine e diverse corrispondenze parziali si verificano prima.
Ho ovviamente cercato la rete, vari forum, ecc., Ma l'unico materiale che ho trovato è molto avanzato e sarebbe di scarsa utilità anche se riuscissi a capire che è pensato per scopi molto diversi.
Ho anche considerato se fosse possibile convertire il modello e l'immagine di prova in una sorta di bitset e quindi solo AND, SHIFT e/o MASK attraverso di esso, ma questo va oltre le mie attuali capacità.
Penso di aver descritto i miei problemi qui. Mi dispiace per il ritardo degli esempi di codice, ma quello che ho sarebbe di scarsa utilità per chiunque e anche un po 'imbarazzante.
Apprezzerò molto qualsiasi aiuto.
Grazie per la risposta. Se è vero quello che dici, immagino che sia solo questione di capire come strutturare il codice correttamente. – Zacariaz
Sarò sicuro di dargli un'occhiata. Grazie. – Zacariaz