Подскажите, пожалуйста, что мне подправить в коде чтобы сделанный только что скрин искал похожий по изображению в одной папке, если находит True, если не находит, то ищет в другой папке, если находит True.
У меня получается так: выставляется сразу функции start_B() и start_S() и на этом выполнение кода заканчивается. А нужно бесконечная цикличность с поиском похожего скрина.
У меня получается так: выставляется сразу функции start_B() и start_S() и на этом выполнение кода заканчивается. А нужно бесконечная цикличность с поиском похожего скрина.
Python:
def start_B():
x, y = pyautogui.position()
pyautogui.moveTo(1268, 481, duration = 1)
pyautogui.click(1268, 481)
pyautogui.moveTo(x, y)
## time.sleep(1)
def start_S():
x, y = pyautogui.position()
pyautogui.moveTo(1259, 544, duration = 1)
pyautogui.click(1259, 544)
pyautogui.moveTo(x, y)
## time.sleep(1)
# сравнение скринов
def rmsdiff_2011(img1, img2):
with Image.open(img1) as im1, Image.open(img2) as im2:
return im1 == im2
# поиск совпадений
def find_image1(path1, path2, image_list, img):
# поиск в цикле нужного скрина
for image in image_list:
if rmsdiff_2011(path1 + img, path2 + image):
break
return start_B()
else:
time.sleep(30)
# поиск совпадений
def find_image2(path1, path3, image_list1, img):
# поиск в цикле нужного скрина
for image1 in image_list1:
if rmsdiff_2011(path1 + img, path3 + image1):
break
return start_S()
else:
time.sleep(30)
def finder():
# список файлов в папке со скринами
path1 = 'D://Мася/ImageBot/-vse/'
path2 = 'D:/Мася/ImageBot/-B/'
path3 = 'D:/Мася/ImageBot/-S/'
image_list = os.listdir(path2)
image_list1 = os.listdir(path3)
filename = None
while True:
time.sleep(1)
box = (1040, 77, 1180, 728)
im = ImageGrab.grab(box)
filename = str(int(time.time())) + '.png'
im.save(path1 + filename, 'PNG')
if find_image1(path1, path2, image_list, filename):
start_B()
else:
if find_image2(path1, path3, image_list1, filename):
start_S()
else:
time.sleep(30)
def main():
finder()
## pass
if __name__ == '__main__':
main()