Как заставить программу ждать, пока пользователь поместит 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) не основная тема. Если это так, то вы будете блокировать на неопределенный срок.

Другие вопросы по тегам