En umiddelbart tanke er dele problemet op i disse 2 dele.
1. Skaffe et screenshot
Det kan muligvis gøres med
https://pypi.python.org/pypi/pyscreenshot eller et andet Python bibliotek. Ellers skal du nok ud i noget C/C++ og noget integration med dit OS eller Direct3D/OpenGL, f.eks.:
https://www.codeproject.com/Articles/5051/Various-methods-for-capturing-the-screenhttps://stackoverflow.com/questions/5069104/fastest-method-of-screen-capturingeller koden til hvordan OBS gør det på Windows f.eks:
https://github.com/jp9000/obs-studio/blob/master/plugins/win-capture/dc-capture.c2. Finde ud af om der et match i databasen.
Her mangler der detaljer. F.eks. er det altid PNG? Skal det matche samme størrelse? Skal pixelfarverne matche præcist? For hvert af spørgsmålene svaret er nej til bliver løsningen væsentlig mere kompliceret.
Der er også spørgsmålet hvor ofte det skal ske, f.eks. er det nok ikke realistisk at tjekke hele skærmen 60 gange i sekundet for et match. Også, kan billederne være hvor som helst på skærmen. Ændrer billededatabasen sig regelmæssigt?
Hvis vi antager du skal søge hele skærmen for et match, så er det nok sjældent er et match; det er undtagelsen ikke reglen. Så et princip for denne løsning kunne være at afvise at et billede er et bestemt sted på skærmen så hurtigt som muligt. Derfor kunne det måske bære brugbart med et "indeks" over billederne i databasen. Det vil sige udvælge nogle bestemte positioner i billederne, f.eks. det øverste venstre hjørne 4x4 pixels. Måske de andre hjørne, et par pixels i midten. Så kan du for hver eneste position i skærmbilledet starte med at tjekke om f.eks. det øverste venstre hjørne matcher, og derefter om resten af "indekset". Hvis pixel ikke matcher noget "indeks" så fortsæt til næste position i skærmbilledet. Hvis indekset matcher, kan du begynde at se om et potentialt match er der ved så at tjekke for hele billedet i databasen op med dit screenshot.
Hvis du bruger pyscreenshot ovenover, står der det kan give det dit skærmskud til PIL/Pillow, som er velegnet til at bearbejde billeder.