Проблема с waitKey
, а не destroyAllWindow
. Последний работает нормально и делает то, что должен делать.
Вы должны понимать, что при отображении окна (по imshow()
) ваше приложение должно иметь основные события l oop, в которых все события, связанные с взаимодействием с windows, такие как нажатие, изменение размера, двигаясь, показывая et c. обрабатываются. Это основное приложение oop из GUI создается и обрабатывается при вызове функции waitKey()
.
Ваш текущий поток выглядит следующим образом:
- показать окно
- нажать любую клавишу
- все windows закрыты независимо от того, какая клавиша была нажмите, потому что вы не позвонили
waitKey
снова для k == 's'
.
if k == 27:
cv2.destroyAllWindows()
elif k == ord('s'):
cv2.imwrite('lena_copy.png', img)
cv2.waitKey(0)
, добавив последнюю строку, вы начинаете новые события l oop и windows все еще видны.