Automatisez la fabrication des sushis avec Python

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←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

Automatisez la fabrication des sushis avec Python
J'ai essayé d'automatiser la fabrication des sushis avec python
Automatisez les tests python avec CircleCI
FizzBuzz en Python3
[Python] Automatisez les builds Pelican avec Travis CI
Grattage avec Python
Grattage avec Python
Python avec Go
Twilio avec Python
Intégrer avec Python
Jouez avec 2016-Python
AES256 avec python
Testé avec Python
python commence par ()
avec syntaxe (Python)
Bingo avec python
Zundokokiyoshi avec python
Excel avec Python
Micro-ordinateur avec Python
Cast avec python
Communication série avec Python
Zip, décompressez avec python
Django 1.11 a démarré avec Python3.6
Python avec eclipse + PyDev.
Communication de socket avec Python
Analyse de données avec python 2
Grattage en Python (préparation)
Essayez de gratter avec Python.
Apprendre Python avec ChemTHEATER 03
Recherche séquentielle avec Python
"Orienté objet" appris avec python
Manipuler yaml avec python
Résolvez AtCoder 167 avec python
Communication série avec python
[Python] Utiliser JSON avec Python
Apprendre Python avec ChemTHEATER 05-1
Apprenez Python avec ChemTHEATER
Exécutez prepDE.py avec python3
1.1 Premiers pas avec Python
Collecter des tweets avec Python
Binarisation avec OpenCV / Python
3. 3. Programmation IA avec Python
Méthode Kernel avec Python
Grattage avec Python + PhantomJS
Conduisez WebDriver avec python
[Python] Redirection avec CGIHTTPServer
Analyse vocale par python
Pensez à yaml avec python
Utiliser Kinesis avec Python
Utiliser DynamoDB avec Python
Getter Zundko avec python
Gérez Excel avec python
Loi d'Ohm avec Python
Exécutez Blender avec python
Python à partir de Windows 7
Automatiser la soumission d'AtCoder (Python)
Carte thermique par Python + matplotlib
Multi-processus de manière asynchrone avec python
Programmation Python avec Atom
Apprendre Python avec ChemTHEATER 02
Utilisez Python 3.8 avec Anaconda