Posted by
ctrueden on
Jan 14, 2015; 11:09pm
URL: http://imagej.273.s1.nabble.com/Help-with-Macro-tp5011225p5011226.html
Hi Joseph,
> My problem is that I am new to this programming language and I can’t
> figure out how I input a variable and have the macro use that value in
> a calculation.
The classical way is using the Dialog.* macro functions:
http://imagej.net/developer/macro/functions.html#dialogThe "ImageJ2 way" is to declare your input and output parameters at the top
of your macro/script; e.g.:
// @String name
// @OUTPUT String greeting
// An ImageJ macro with parameters.
// It is the duty of the scripting framework to harvest
// the 'name' parameter from the user, and then display
// the 'greeting' output parameter, based on its type.
greeting = "Hello " + name + "!";
For numeric parameters, you can use "double" for the type instead of
"String".
You an access the above macro as a starting point by pressing the "[" key
to launch the Script Editor, then choosing Templates > IJ1 Macro > Greeting.
You will need to be using ImageJ2 for this approach to work. The easiest
way to do that at the moment is to download the Fiji distribution of ImageJ
from:
http://imagej.net/DownloadsRegards,
Curtis
On Wed, Jan 14, 2015 at 4:36 PM, Margiotta, Joseph <
[hidden email]> wrote:
> I would like to write a macro that allows the user to set the tolerance
> for the wand tool by clicking on two points that represent the boundaries
> of light and dark and then take the difference between these values as the
> tolerance.
>
> This difference value could then be used in a line of code for the macro I
> have already written and that is now specified as 2500 in the macro below
> that is set up to draw a perimeter around a light area in a stack of 25
> images:
>
>
> run("Set Scale...", "distance=0 known=0 pixel=1 unit=pixel");
>
> setTool("point");
>
> 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+")");
>
> };wait(2000);
>
> w = selectionType();
>
>
> if( w == -1 ) {
>
> exit("There was no selection.");
>
> } else if( w != 10 ) {
>
> exit("The selection wasn't a point selection.");
>
> } else {
>
> getSelectionCoordinates(xPoints,yPoints);
>
> x1 = xPoints[0];
>
> y1 = yPoints[0];
>
> showMessage("Got coordinates ("+x1+","+y1+")");
>
> }
>
> for (i=1; i<=25; i++) {
>
> j=1*i;
>
> Stack.setSlice(j);
>
> //setTool("wand");
>
> doWand(x, y, 2500, "8-connected");
>
> doWand(x1, y1, 2500, "8-connected");
>
> run("Measure");wait(200);
>
> }
>
>
> My problem is that I am new to this programming language and I can’t
> figure out how I input a variable and have the macro use that value in a
> calculation.
>
> Can anyone out there help?
>
>
> -- Joseph F. Margiotta, PhD
> Dept. of Neurosciences
> University of Toledo College of Medicine
> 3000 Transverse Drive
> Block HS 120A Mail Stop 1007
> Toledo, OH 43614
> 419-383-4119
>
>
> --
> ImageJ mailing list:
http://imagej.nih.gov/ij/list.html>
--
ImageJ mailing list:
http://imagej.nih.gov/ij/list.html