Bonjour. Soudain tout le monde Sushi frapper Tu es entrain de faire? La plupart des gens qui ont pratiqué la frappe devraient avoir joué à ce jeu. Sushi Hitting est un jeu par navigateur. Donc, j'ai pensé qu'il serait facile d'automatiser si j'avais du HTML avec Python, alors j'ai décidé de le faire.
J'essayais d'obtenir le HTML, En fait, la fabrication de sushis utilise une technologie appelée OpenGL, Il semble que les caractères soient affichés sous forme d'image. C'est donc un changement de politique. Reconnaissons l'image.
Tout d'abord, appuyez sur le bouton de démarrage et le bouton recommandé.
import pyautogui
import time
x,y=pyautogui.locateCenterOnScreen("susida.png ")
print(x)
print(y)
pyautogui.click(x, y+100)
print("J'ai appuyé sur le bouton de démarrage.")
time.sleep(1)
pyautogui.click(x, y+100)
print("J'ai appuyé sur la recommandation.")
time.sleep(1)
pyautogui.typewrite(" ")
print("début.")
time.sleep(2)
Si vous le spécifiez en coordonnées absolues, il changera en fonction de la taille de la fenêtre, etc. J'ai décidé d'utiliser les coordonnées relatives de susida.png. ←susida.png Cliquez ensuite sur cette coordonnée avec pyautogui. Installation de pyautogui
pip install pyautogui
est.
Vient ensuite la partie reconnaissance d'image.
import pyocr
import pyocr.builders
from PIL import Image
import sys
import cv2
i=1
result=0
tools=pyocr.get_available_tools()
if len(tools) == 0:
print("L'outil OCR est introuvable.")
sys.exit(1)
tool=tools[0]
while(i<201):
sc=pyautogui.screenshot(region=(x-110, y+85, 210, 25))
sc.save("original.png ")
original=cv2.imread("original.png ",0)
threshold=100
ret, img_thresh = cv2.threshold(original, threshold, 255, cv2.THRESH_BINARY)
cv2.imwrite("gray.png ", img_thresh)
hanten = cv2.imread("gray.png ")
hanten2=cv2.bitwise_not(hanten)
cv2.imwrite("sushida_sc.png ", hanten2)
img_org=Image.open("sushida_sc.png ")
builder = pyocr.builders.TextBuilder()
tmp=result
result=tool.image_to_string(img_org, lang="eng", builder=builder)
if(tmp != result):
print(i,"Plat:",result)
pyautogui.typewrite(result)
i=i+1
time.sleep(0.3)
Pyocr est utilisé pour la reconnaissance d'image. S'il vous plaît voir ici pour la méthode d'introduction ↓ https://gammasoft.jp/blog/ocr-by-python/ Tout d'abord, je serre généralement les caractères romains. Cependant, cela rend l'arrière-plan transparent et réduit la précision de la reconnaissance. Donc, il sera binarisé. Puis inversez-le pour rendre le texte noir. Si vous saisissez ce que vous reconnaissez avec pyautogui, l'automatisation de la fabrication des sushis est terminée. Je me suis arrêté à 200 car si je mange trop de sushis, j'obtiens une erreur. Le texte intégral est ci-dessous.
import pyautogui
import time
import pyocr
import pyocr.builders
from PIL import Image
import sys
import cv2
i=1
result=0
tools=pyocr.get_available_tools()
if len(tools) == 0:
print("L'outil OCR est introuvable.")
sys.exit(1)
tool=tools[0]
x,y=pyautogui.locateCenterOnScreen("susida.png ")
print(x)
print(y)
pyautogui.click(x, y+100)
print("J'ai appuyé sur le bouton de démarrage.")
time.sleep(1)
pyautogui.click(x, y+100)
print("J'ai appuyé sur la recommandation.")
time.sleep(1)
pyautogui.typewrite(" ")
print("début.")
time.sleep(2)
while(i<201):
sc=pyautogui.screenshot(region=(x-110, y+85, 210, 25))
sc.save("original.png ")
original=cv2.imread("original.png ",0)
threshold=100
ret, img_thresh = cv2.threshold(original, threshold, 255, cv2.THRESH_BINARY)
cv2.imwrite("gray.png ", img_thresh)
hanten = cv2.imread("gray.png ")
hanten2=cv2.bitwise_not(hanten)
cv2.imwrite("sushida_sc.png ", hanten2)
img_org=Image.open("sushida_sc.png ")
builder = pyocr.builders.TextBuilder()
tmp=result
result=tool.image_to_string(img_org, lang="eng", builder=builder)
if(tmp != result):
print(i,"Plat:",result)
pyautogui.typewrite(result)
i=i+1
time.sleep(0.3)
YouTube:https://www.youtube.com/watch?v=kZ0MKTQXgj0
Recommended Posts