Как отобразить 2 изображения последовательно, в одном окне, используя OpenCV? - PullRequest
0 голосов
/ 11 марта 2020

Я использую OpenCV в python, и цель кода - отображать одно изображение за другим в одном и том же окне, не разрушая его. Например, i1.jpg отображается, а затем в том же окне отображается стрелка влево после паузы 5 с. В моем случае отображается i1.jpg, затем окно уничтожается, а затем в другом окне отображается i2.jpg.

Вот код для того же самого -

t_screen_time = 5000

import numpy
import cv2

left_arrow = "left_arrow.jpg"
right_arrow = "right_arrow.jpg"

img = cv2.imread(left_arrow)
cv2.imshow('image',img)
cv2.waitKey(t_screen_time)
cv2.destroyAllWindows()

img = cv2.imread(right_arrow)
cv2.imshow('image',img)
cv2.waitKey(t_screen_time)
cv2.destroyAllWindows()

1 Ответ

0 голосов
/ 11 марта 2020

Аргумент в cv2.waitKey() - это время ожидания нажатия клавиши, а не точное время, в течение которого отображается изображение.

cv::imshow() или cv2.imshow() не было разработано, чтобы быть полным GUI. Он был разработан для быстрой отладки и отображения изображений / видео.

Вы можете достичь того, что вам нужно, используя некоторую форму sleep() в потоке или около того. Но это сложнее сделать в python. Вы также можете просто изменить свой код на

t_screen_time = 5000

import numpy 
import cv2

left_arrow = r"first/image" 
right_arrow = r"second/image"

img = cv2.imread(left_arrow) 
cv2.imshow('image',img)
cv2.waitKey(t_screen_time) 

img = cv2.imread(right_arrow) 
cv2.imshow('image',img) 
cv2.waitKey(t_screen_time) 
cv2.destroyAllWindows()

, удалив cv2.destroyAllWindows() перед отображением второго изображения. Я протестировал этот код, и он работает, но если вам нужна дополнительная функциональность GUI, используйте что-то вроде Qt.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...