Вот код, который у меня есть, и он работает нормально, как и должно быть, он отображает изображение, пока вы не нажмете кнопку:

import cv2
def open_img():
   template = cv2.imread('templates\\img_test.jpg')
   cv2.imshow('template', template)
   cv2.waitKey(0)
   cv2.destroyAllWindows()
open_img()

Этот скрипт называется «img_mod» и хранится в «обнаружения». Теперь я хотел бы вызвать эту функцию из другого скрипта:

from detection import img_mod
img_mod.open_img()

Это создает следующую ошибку:

Traceback (most recent call last):
  File "D:/Projects/BJ/Sandbox.py", line 3, in <module>
    img_mod.open_img()
  File "D:\Projects\BJ\detection\img_mod.py", line 6, in open_img
    cv2.imshow('template', template)
cv2.error: OpenCV(3.4.4) C:\projects\opencv-python\opencv\modules\highgui\src\window.cpp:356: error: (-215:Assertion failed) size.width>0 && size.height>0 in function 'cv::imshow'

Для меня это похоже на ошибку, указанную в cv2. Но я понятия не имею, почему это не работает. Любая помощь будет оценена.

-1
Tektro 7 Июл 2019 в 00:37

3 ответа

Лучший ответ

Ваше изображение в

D:\Projects\BJ\detection\templates\img_test.jpg

Но теперь вы пытаетесь загрузить его из

D:\Projects\BJ\templates\img_test.jpg

Потому что вы запускаете другой файл Python.

0
Thomas Weller 6 Июл 2019 в 21:48

Вот что происходит, когда imread() не может прочитать изображение и возвращает None, а None передается imshow().

Есть несколько возможностей. Наиболее вероятно, что вы находитесь не в том каталоге, в котором, как вы думаете, вы находитесь, и в текущем каталоге нет templates папки. Вы можете справиться с этим, передав полный путь к img_test.jpg.

0
Dave W. Smith 6 Июл 2019 в 21:47

Сообщение об ошибке связано с ошибкой подтверждения: size.width>0 && size.height>0

Это означает, что функция не выполняет действие, потому что некоторые условия не выполняются.

Вероятно, ваше изображение templates\\img_test.jpg недопустимо или не существует. Попробуйте, например, указать полный путь к действительному файлу изображения.

0
Anthony Kong 6 Июл 2019 в 21:45