Я использую entireScreen=ImageGrab.grab()
, чтобы создать screengrab, а затем провести некоторые анализы с помощью openCV2, чтобы проверить, содержит ли экран определенные изображения шаблонов. Эти шаблоны загружаются с template = cv2.imread(name,0)
.Преобразование изображения PIL в OpenCV2 image
У меня есть теперь следующая задача: при сравнении моего скриншота с шаблонами я всегда нужен сначала сохранить мой скриншот с этим:
entireScreen.save('pics/screenshot.png', format='png')
А затем перезагрузить его:
cv2.imread('screenshot.png',0)
В противном случае не будут работать:
res = cv2.matchTemplate(img,template,method)
Я хотел бы получить сообщение об ошибке, как этот:
TypeError: image is not a numpy array, neither a scalar
Мой вопрос: как я могу преобразовать скриншот entireScreen=ImageGrab.grab()
в формат, совместимый с opencv2, без необходимости сохранять и затем перезагрузите его cv2.imread.
Я не» У меня есть система Windows, настроенная на данный момент, и попытка импортировать 'ImageGrab' говорит мне, что это только Windows, поэтому это всего лишь предположение: передать' wholeScreen' через 'np.array()', чтобы преобразовать его в массив numpy перед передачей его в 'cv2.matchTemple()'. То есть 'res = cv2.matchTemplate (np.array (wholeScreen), шаблон, метод)' –
Довольно полезный инструмент, кстати, этот screengrab. Спасибо, что подняли этот вопрос! – Divakar