파이톤으로 초밥을 만들어 보도록 하겠습니다.

13226 단어 Python3Python

Pythn3로 초밥을 풀어봤어요.


며칠 전 Qita 기사에서 싸이혼 초보자가 1년 동안'초밥을 풀어보고 때리는 것'을 해본 것 같아서 했습니다.
나는 단지 부정행위일 뿐이라는 것을 이해하지만, 차트에 등록하지 않았기 때문에 용서해 주십시오.
비디오↓
이 보도

개시하다


어제 그저께 파이토존에 지갑을 넣었는데https://youtu.be/fSpRSJDFPLo 왜 pyocr를 못 썼는지 아주 번거로운 방법으로 숫자를 읽었는데 왠지 안 썼어요.
그래서 얼른 할게요.

컨디션

  • Python 3.6.4
  • 그림에서 문자 불러오기


    Pytohon에서 pyocr를 사용하여 텍스트를 읽습니다.
    참고인용하다.
    moji.py
    from PIL import Image
    import sys
    import pyocr
    import pyocr.builders
    
    def moji(a):
        tools = pyocr.get_available_tools()
        tool = tools[0]
    
        langs = tool.get_available_languages()
        lang = langs[0]
        #txtに変換した文字列を代入する
        txt = tool.image_to_string(
            Image.open(a + '.png'),
            lang="eng",
            builder=pyocr.builders.TextBuilder(tesseract_layout=6)
        )
        Text = list(txt)   #文字列を配列に変換
        count = len(Text)
        i = 0
        while True:   #寿司打の場合小文字アルファベットか'-'しか出てこないのでそれ以外の文字が出てきていたら削除する
            if i >= count:
                break
            if Text[i] < 'a' or Text[i] > 'z':
                if Text[i] != '-':
                    del Text[i]
                    count -= 1
                else:
                    i += 1
            else:
                i += 1
    
        txt = str(''.join(Text))   #文字列に戻す
        return txt
    

    캡처


    초밥을 만들 때 한가운데 일본어와 영어(로마자)가 나오기 때문에 캡처해서 아래 알파벳 문자열을 얻었다.
    이 보도
    이때 알파벳 문자열의 길이에 따라 테두리의 크기가 바뀌므로 미세하게 조정해야 한다.

    (아득히 먼 은하수)
    이걸 최대한 공격해서 시간이 많이 단축된 것 같습니다.
    main.py
    import pyaoutgui
    #省略
        img = pa.screenshot(
            imageFilename="screenshot" + str(i) + ".png",    # 保存先ファイル名
            region=(797, 588, 275, 30)    # 撮影範囲(x,y,width,height)
        )
    #省略
    

    입력


    모지 함수에 그림 (파일 이름) 을 보내고 문자열을 되돌려줍니다.
    pyaoutgui로 되돌아오는 문자열을 입력했습니다.
    main.py
    import pyoutgui as pa
    #省略
        string = moji.moji("screenshot" + str(i))
        pa.typewrite(string, interval = 0.0)
    #省略
    

    시간을 낭비하다.


    화면이 전환되는 순간이 캡쳐에 포착되지 않도록 시간을 조정했다.
    여기도 거의 한계야.
    main.py
    import time
    #省略
        nowtime1 = time.time()
        while True:
            if time.time() - nowtime1 > 0.25:
                break
    #省略
    

    감상


    그림으로 보면 문자가 어려울 것 같아!만약 이 점을 할 수 있다면, 반드시 일종의 학습이 될 것이다!나는 전혀 어렵지도 공부도 아니라고 생각한다.
    하지만 인력으로는 불가능한 기록이 있어 즐겁다.

    코드 전체 텍스트


    main.py
    import moji
    import pyautogui as pa
    import time
    start = time.time()
    pa.mouseDown(x = 765, y = 588, button = 'left')
    pa.mouseUp()
    pa.typewrite(" ", interval = 0.0)
    nowtime = time.time()
    while True:
        if time.time() - nowtime > 1.5:
            break
    i = 0
    while True:
        if time.time() - nowtime > 300:
            break
        print(i)
        img = pa.screenshot(
            imageFilename="screenshot" + str(i) + ".png",    # 保存先ファイル名
            region=(797, 588, 275, 30)    # 撮影範囲(x,y,width,height)
        )
        string = moji.moji("screenshot" + str(i))
        pa.typewrite(string, interval = 0.0)
        print(string)
        nowtime1 = time.time()
        while True:
            if time.time() - nowtime1 > 0.25:
                break
        i += 1
    
    종결어.

    좋은 웹페이지 즐겨찾기