- {registration_date}
- сообщений: {posts}
- {tel_link}
Может кто подсказать начинающему, есть код где я делаю скриншот экрана и в определённой области считываю текст для последующей работы с извлеченным текстом, все работает как надо но только до какого то времени, спустя разное количество циклов начинает сохранять один и тот же скриншот то есть он перестает меняться, данные на скриншоте часто повторяются может быть это какое то кэширование? Еще думаю может проблема из за того что работаю в VMware Workstation Pro - может там какое то ограничение с скриншотами или может быть как то можно в коде это обойти чтоб скриншот не зависал. Уже больше двух недель с этой бедой мучаюсь, выручите пожалуйста, на гуглить ничего подобного не получается. Пробовал перед новым снимком вызывать сборщик мусора, gc.collect(), очистку папки temp, очистку буфера обмена, паузы, комплировал в exe, замерял озу памяти вполне достаточно больше 800мбайт свободно на момент создания но все равно добавлял еще 2гб озу но не помогло.
Буду рад любым предложениям и идеям, даже если вы не уверены пожалуйста напишите свои рекомендации.
вот сам код:
#получаю координаты рамки для скриншота области (вырезаю область)
if coord == self.c_a_price:
self.processing = True
x1_inner_final = coord[0]
y1_inner_final = coord[1]
x2_inner_final = coord[2]
y2_inner_final = coord[3]
#собственно сам скриншот
screenshot = pyautogui.screenshot()
img_temp = screenshot.crop((coord))
# это уже начал городить костыли, предполагал что если физический цифровой файл будет иметь новое имя а старый удаляться тогда будет работать как надо
with tempfile.NamedTemporaryFile(suffix=".png", delete=False) as temp_file:
temp_file_path = temp_file.name
# screenshot = pyautogui.screenshot()
img_temp.save(temp_file_path)
# Обрабатываем скриншот- бинаризирую и прочее подготавливаю к извлечению текста
sub_image = self.image_covert(temp_file_path)
# Удаляем временный файл после обработки
os.remove(temp_file_path)
# Сохраняю скриншот для проверки и отладки каждый раз с новым именем +1
filename = os.path.join(self.save_folder_2, f"screen{self.counter_2}.png")
sub_image.save(filename)
self.counter_2 += 1
self.processing = False
return sub_image
ответ опубликован:
- 5
- 1
- 2
- 3
- 4
- 5