#imagej #fiji #imagej-macro
Вопрос:
Я новичок в макросах ImageJ и хочу использовать макрос на Фиджи. Код для макроса взят из этого источника.
macro "MultiRoiMove Tool - C00cT0f16M" {
if (RoiManager.selected<2) exit();
indexes=split(call("ij.plugin.frame.RoiManager.getIndexesAsString"));
roiManager("Combine");
getCursorLoc(x, y, z, modifiers);
Roi.getBounds(x0, y0, width, height);
while(modifiersamp;16>0) {
getCursorLoc(x1, y1, z, modifiers);
Roi.move(x0 x1-x, y0 y1-y);
}
roiManager("select", indexes);
roiManager("translate", x1-x, y1-y);
}
Я скачал код и сохранил его в виде текстового файла. Затем я запустил макрос, перейдя в Плагины > Макросы >> Выполнить. Версия ImageJ, которую я использую, составляет 1.53 дж.
Однако, когда я запускаю макрос, я получаю следующую ошибку:
Я видел онлайн на форуме ImageJ, что этот макрос работает для других людей. Я провел некоторую отладку и знаю, что получаю ошибку, потому что код не входит в цикл while при запуске макроса, поэтому функция не x1
возвращает значение getCursorLoc
.
Но я не знаю, как заставить код войти в цикл while. Кто-нибудь знает, нужно ли мне щелкнуть что-то конкретное перед запуском макроса? Мне кажется, что код войдет в цикл while, когда произойдет событие модификатора мыши (поскольку параметр модификаторов, возвращаемый функцией getCursorLoc, является флагами модификатора события мыши). Любая помощь будет признательна.
Ответ №1:
Вам нужно выбрать рентабельность инвестиций в менеджере рентабельности инвестиций, который вы хотите переместить. Вы можете нажать на первый, а затем cmd нажмите (на Mac), чтобы добавить дополнительные ROI. Затем макрос переместит эти ROI, но не те, которые не были выбраны.
modifiers
Часть кода получает, какие кнопки мыши нажимаются, и если использовать щелчки левой кнопкой мыши (16) и перетаскивание, это определяет прямоугольник, который затем используется для перемещения ROI.
Вы должны выбрать Плагины > Макросы >> Установить, чтобы добавить инструмент на панель инструментов.