Как заставить программу ждать, пока пользователь поместит ROI на изображение, чтобы продолжить - Java
Я пишу плагин, в котором пользователь должен поместить область ROI на изображение (прямую трансляцию изображения с камеры на микроскопе), и после размещения этой области программа должна выполнить действие с этой областью интереса.
Я попробовал
new WaitForUserDialog("Please place the Rectangle-ROI to begin, then click OK.").show();
Но для этого необходимо, чтобы пользователь фактически нажал кнопку ОК после размещения области интереса. Я хочу обойти нажатие кнопки ОК.
Как я могу написать свой код, чтобы программа попросила пользователя разместить область интереса (на изображении (прямые изображения с камеры) и, как только область будет установлена, запускает программу для продолжения (без нажатия кнопки ОК). кнопка).
Моя цель - помочь пользователю избежать потери времени между размещением области интереса и нажатием кнопки ОК. Это потому, что изображение будет жить и меняться, и к тому времени, когда пользователь нажимает ОК, возможно, окупаемость инвестиций уже не в интересующей вас точке.
Заранее спасибо! было бы здорово, если бы кто-то мог указать мне правильное направление.
Сарала
1 ответ
Вы можете рассмотреть Semaphore
для этой проблемы.
Вы можете инициализировать семафор, который разделяется между вашим основным кодом и вашим обработчиком событий:
Semaphore sem = new Semaphore(0);
Ваш логический код будет ждать на семафоре, пока не появится разрешение:
sem.acquire();
И ваш обработчик событий (где вы обнаружите, что ROI нарисован) освободит семафор, разблокировав другой поток:
sem.release();
ПРИМЕЧАНИЕ: я предполагаю, что ваш логический поток (тот, на котором вы вызываете acquire
) не основная тема. Если это так, то вы будете блокировать на неопределенный срок.