2016-10-26 13 views
1

Я новичок в ImageJ и пытался воссоздать следующий макрос, используя Python (в редакторе макросов ImageJ).ImageJ: NameError при использовании selectionType() в скрипте Python

s = selectionType(); 

if(s == -1) { 
    exit("There was no selection."); 
} else if(s != 10) { 
    exit("The selection wasn't a point selection."); 
} else { 
    getSelectionCoordinates(xPoints,yPoints); 
    x = xPoints[0]; 
    y = yPoints[0]; 
    showMessage("Got coordinates ("+x+","+y+")"); 
} 

Проблема заключается в том, я не знаю, как импортировать selectionType() и getSelectionCoordinates() встроенные функции. Я получаю NameError, когда пытаюсь использовать их в коде Python.

Любые идеи?

Спасибо, Alex

ответ

0

К сожалению, ImageJ 1.x встроенный в макро-функции не являются методами первого класса Java, и, следовательно, не обязательно из других языков сценариев, таких как Python.

Вы можете прочитать источник Java, чтобы узнать, что делают макрофункции, но в некоторых случаях требуется несколько усилий для расшифровки. Например, функция getSelectionCoordinates может быть seen here.

Вкратце: он вызывает метод getRoi()ImagePlus, а затем в зависимости от вида Roi он заполняет координаты по-разному. Для типа Roi.LINE используются поля x1d, y1d, x2d и y2d. В противном случае метод getFloatPolygon()Roi вызывается для преобразования ROI в тип многоугольника, а затем его координаты пройдены.

Для функции selectionType позвоните по телефону getRoi() по телефону ImagePlus.