Spero di non violare nessuna regola postando in maniera assolutamente generica un po' di codice, ma davvero altrimenti non saprei come spiegarmi.
Ho inserito nella mia funzione un while del tipo:
for y in img:
while c in y[salta:]
All'interno di quel while viene appunto calcolato un "salta" in base a quante tuple del colore scelto vengono contate.
Nella mia testa, questo avrebbe dovuto far si che il programma ricominciasse a controllare la stessa riga ma partendo da un indice diverso, invece appena arriva alla fine del prima riga il while viene interrotto e non viene controllato il resto della riga.
Ovviamente ho controllato, e il "salta" calcolato è corretto, ho provato anche direttamente sulla console se su quella riga esattamente con la stessa impostazione (quindi ad esempio, se il salta era 40, usando y[40:]) venisse rilevato il colore, e veniva rilevato.
Dopo aver effettuato numerosi controlli del codice, la domanda mi viene spontanea: ci sta qualche peculiarità del while che non sto considerando? O sto sbagliando qualcosa nel ragionamento di base?
Allego immagine per far capire meglio la situazione, usando Ist2.png.
I pixel verdi sono quelli che il programma effettivamente controlla e registra.