Почему cv.waitKey(0) не приостанавливает выполнение до тех пор, пока не будет нажата клавиша?

#opencv3.0 #opencv-python

Вопрос:

Я думал cv.waitKey , что приостановлю выполнение до тех пор, пока не будет нажата клавиша, но, похоже, этого не происходит. Когда я запускаю следующий код:

 import cv2 as cv

print("Start")
k = cv.waitKey(0)
print("Stop")
 

Он не ждет нажатия клавиши перед завершением выполнения. Должно ли на самом деле быть показано изображение, чтобы произошла задержка? Есть ли что-то (одна из многих вещей) в том, что происходит создание цикла событий, чего я не понимаю?

(Примечание: Я не просто ищу что-то, чтобы действовать в качестве «входной» строки. В настоящее время я использую OpenCV с eyetracker и пытался понять, почему OpenCV, похоже, блокирует функцию обратного вызова eyetracker, когда я столкнулся с этим недоразумением.)

Ответ №1:

Вам нужно создать и активировать окно высокого разрешения(в фокусе).:

https://docs.opencv.org/3.4/d7/dfc/group__highgui.html#ga5628525ad33f52eab17feebcfba38bd7

Таким образом, будет работать следующее (с файлом изображения.png некоторого изображения на диске):

 import cv2 as cv

print("Start")
image=cv.imread("imagefile.png")
cv.imshow("test",image)
k = cv.waitKey(0)
print("Stop")