Python Forum
pyautogui screenshotting region relative to image found on screen - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: General Coding Help (https://python-forum.io/forum-8.html)
+--- Thread: pyautogui screenshotting region relative to image found on screen (/thread-21574.html)



pyautogui screenshotting region relative to image found on screen - Bmart6969 - Oct-05-2019

i am trying to manipulate a known region found by using the locate on screen feature then changing these points to select a region beside the found image and take a screenshot of it. no clue how to go about doing this.
example:

foodi = pyautogui.locateOnScreen("foodi.png", confidence=0.7)

pyautogui.locateOnScreen(foodi)

this image location would be (1047, 45, 36, 35) except i want to select a region that is (1047+32,45+7,36+30,35-10)
i tried simply doing
pyautogui.locateOnScreen(foodi(+32,+7,+30,-10))
returns 'tuple' object is not callable.
How would i go about manipulating the region of foodi as it changes and selecting the region beside it?

Thanks
Bmart



RE: pyautogui screenshotting region relative to image found on screen - Bmart6969 - Oct-05-2019

got it to modify the values of a found images region however it is still giving me an error this is what i have and the error.
print(foodi)

foodil = numpy.array(foodi)
print(foodil.astype(int)[[0]+32,[1]+7,[2]+30,[3]-10])
Error:
Traceback (most recent call last): (1047, 45, 36, 35) File "C:/Users/brady/PycharmProjects/Bot/scratch.py", line 21, in <module> (1079, 52, 66, 25) print(foodil.astype(int)[[0]+32,[1]+7,[2]+30,[3]-10]) TypeError: can only concatenate list (not "int") to list Process finished with exit code 1



RE: pyautogui screenshotting region relative to image found on screen - buran - Oct-05-2019

try
left, top, width, height = pyautogui.locateOnScreen("foodi.png", confidence=0.7)
im = pyautogui.screenshot('my_screenshot.png', region=(left + 32, top + 7, width + 30, height - 10)) # don't pass filename if you don't want it saved to file



RE: pyautogui screenshotting region relative to image found on screen - Bmart6969 - Oct-05-2019

i figured out a way to do it however it is now saying too many indices for array for
oil1[0]
food1 = numpy.array(foodi)

food1[0] += 32
food1[1] += 7
food1[2] += 30
food1[3] -= 10

food = pyautogui.screenshot(region=(food1[0], food1[1], food1[2], food1[3]))
food.save(r'C:\Users\brady\PycharmProjects\Bot\foodc.png')

def get_text(image):
    return pytesseract.image_to_string(image)
img = Image.open('foodc.png')
print(pytesseract.image_to_string(img))
time.sleep(1)
oil1 = numpy.array(oili)

oil1[0] += 32
oil1[1] += 7
oil1[2] += 30
oil1[3] -= 10

oil = pyautogui.screenshot(region=(oil1[0], oil1[1], oil1[2], oil1[3]))

oil.save(r'C:\Users\brady\PycharmProjects\Bot\oilc.png')

(Oct-05-2019, 06:20 PM)Bmart6969 Wrote: i figured out a way to do it however it is now saying too many indices for array for
oil1[0]
food1 = numpy.array(foodi)

food1[0] += 32
food1[1] += 7
food1[2] += 30
food1[3] -= 10

food = pyautogui.screenshot(region=(food1[0], food1[1], food1[2], food1[3]))
food.save(r'C:\Users\brady\PycharmProjects\Bot\foodc.png')

def get_text(image):
    return pytesseract.image_to_string(image)
img = Image.open('foodc.png')
print(pytesseract.image_to_string(img))
time.sleep(1)
oil1 = numpy.array(oili)

oil1[0] += 32
oil1[1] += 7
oil1[2] += 30
oil1[3] -= 10

oil = pyautogui.screenshot(region=(oil1[0], oil1[1], oil1[2], oil1[3]))

oil.save(r'C:\Users\brady\PycharmProjects\Bot\oilc.png')

This code worked on my scratch file when I copied it over to my Main project it started giving me this error.