Bonjour à tous,
Pour apprendre à être plus à l'aise avec l'algorithmique sur Python j'ai bidouillé quelques fonctions de reconnaissance d'images pour faire un bot Pixel sur Rétro. Le fait est que petit à petit j'ai adoré faire ça et j'ai pu faire un bot indétectable qui a pu me faire environ 1500 combats par jour pendant une année entière et en farmant aussi rapidement qu'un humain.
Je voulais partager la fonction qui m'a servi de base et qui m'a permis de tout créer ensuite de façon très simplifiée en espérant que ça puisse en inspirer d'autres comme cela m'a inspiré, car je ne m'en sers personnellement plus.
def finds_and_clicks(image_paths, min_conf):
# Chargement de l'image principale
screenshot = pyautogui.screenshot()
screenshot = np.array(screenshot)
screenshot = cv2.cvtColor(screenshot, cv2.COLOR_RGB2BGR)
for image_path in image_paths:
template = cv2.imread(os.path.join(folder, image_path))
result = cv2.matchTemplate(screenshot, template, cv2.TM_CCOEFF_NORMED)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)
# Position trouvée avec le score maximal
if max_val > min_conf:
x, y = max_loc[0] + template.shape[1] // 2, max_loc[1] + template.shape[0] // 2
pyautogui.click(x, y)
time.sleep(0.15)
return # Sortie de la fonction si une correspondance est trouvée
else:
current_time = datetime.now().strftime("%H:%M")
print(f"[{current_time}] Scores insuffisant obtenus pour {image_path} : {max_val} < {min_conf}")
current_time = datetime.now().strftime("%H:%M")
print(f"[{current_time}] Aucune correspondance trouvée pour {image_paths}")
A partir de maintenant vous n'avez plus qu'à appeler la fonction avec le fichier image correspondant à ce que vous cherchez à l'écran et le seuil de confiance de 0 à 1.