@Name_Zagotovka

Как использовать cv2.matchTemplate без сохранения на диск исходника?

Имеем код след. действия. Делаем скрин. ищем на скрине "zzz.png". Если нашли выводим координаты.
Но если пытаться отправить скрин переменной(код ниже), то получаем ошибку "Expected Ptr for argument 'image'", если я правильно понял ,ругается что есть обязательный аргумент, который ждет функция matchTemplate, и который якобы не указан...
def chek():
    img = ImageGrab.grab()
    template = cv2.imread("zzz.png")
    res = cv2.matchTemplate(img,template,cv2.TM_CCOEFF_NORMED)
    min_v, max_v, min_pt, max_pt = cv2.minMaxLoc(res)
    threshold=0.98
    loc = np.where( res >= threshold)
    # print(str(x)+'    '+str(y))
    coord=1
    for pt in zip(*loc[:: -1]):
        x,y=pt
        print('coord = '+str(coord))
        print(x)
        print(y)
        coord=coord+1


Однако если немного поправить код, а именно сохранить сделанный скрин, далее его читаем через read (исправление ниже), то все взлетает.
img1 = ImageGrab.grab()
    img.save('test.png')
    img = cv2.imread("test.png")
    template = cv2.imread("zzz.png")
    res = cv2.matchTemplate(img,template,cv2.TM_CCOEFF_NORMED)


Вопрос: возможно ли передать скрин, переменной, т.е. без сохранения в файл, и последующего чтения из сохраненного файла.
Заранее благодарю
  • Вопрос задан
  • 230 просмотров
Пригласить эксперта
Ответы на вопрос 1
fox_12
@fox_12 Куратор тега Python
Расставляю биты, управляю заряженными частицами
Можно. Прочитать про BytesIO
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы