Oscar
Oscar

Reputation: 81

How could I pass my file name through this method?

I am taking a screenshot, and then I need to reference the shot I just took so I can translate what's inside it.

When I directly pass a file location, e.g "filex.png", to readtext, it works, but I just need it to pass the written file into it.

import easyocr
import pyautogui
import time
import cv2 
import numpy as np

reader = easyocr.Reader(['en'])
tag = 1

for i in range(2):
    time.sleep(4)
    image = pyautogui.screenshot(region=(630,400,650,130))
    image = cv2.cvtColor(np.array(image),
                     cv2.COLOR_RGB2BGR)
    tag+=1

    img = cv2.imwrite(f"image{tag}.png", image)


    results = reader.readtext(img)
    text=""
    for result in results:
        text += result[1] + " "

        print(text)

Upvotes: 0

Views: 231

Answers (2)

SachaDee
SachaDee

Reputation: 9545

import pyautogui
import easyocr
import numpy as np

reader = easyocr.Reader(['en'],gpu=False)
im = pyautogui.screenshot(region=(630,400,650,130)
result = reader.readtext(np.array(im),detail = 0)

just pass the pyautogui image as np.array

Upvotes: 0

Henry Ecker
Henry Ecker

Reputation: 35636

In answer to your specific question, I think you're looking for something like:

import easyocr
import pyautogui
import time
import cv2
import numpy as np

reader = easyocr.Reader(['en'])
tag = 1

for i in range(2):
    time.sleep(4)
    image = pyautogui.screenshot(region=(630, 400, 650, 130))
    image = cv2.cvtColor(np.array(image), cv2.COLOR_RGB2BGR)
    tag += 1

    f_name = f"image{tag}.png"
    cv2.imwrite(f_name, image)
    results = reader.readtext(f_name)
    
    text = ""
    for result in results:
        text += result[1] + " "

        print(text)

You can just store your file name in a variable in pass it to both imwrite and readtext


There are other options as well, depending on what information you need access to within the program, and how quickly you need to process your data.

Option: Pass the np.array directly to readtext

image = pyautogui.screenshot(region=(630, 400, 650, 130))
image = cv2.cvtColor(np.array(image), cv2.COLOR_RGB2BGR)
results = reader.readtext(image)

Option: Pass the data from the written file to the readtext function.

f_name = f"image{tag}.png"
cv2.imwrite(f_name, image)

with open(f_name, 'rb') as f:
    results = reader.readtext(f.read())

Upvotes: 1

Related Questions