http://imagej.273.s1.nabble.com/Measure-without-displaying-results-tp5004809p5004879.html
Thank you Wayne! I will try it out.
Prof. Sidnei Paciornik
> On Sep 18, 2013, at 2:01 AM, Aryeh Weiss wrote:
>
> > On 9/18/13 7:57 AM, Rasband, Wayne (NIH/NIMH) [E] wrote:
> >>
> >> Use the Analyzer class. Specify the measurements when you call the
> constructor and call the measure() method to make measurements. Here is a
> JavaScript example.
> >>
> >> -wayne
> >>
> >> imp = IJ.createImage("Untitled", "8-bit ramp", 500, 500, 1);
> >> measurements = Measurements.AREA;
> >> measurements += Measurements.MEAN;
> >> measurements += Measurements.PERIMETER;
> >> measurements += Measurements.SHAPE_DESCRIPTORS;
> >> rt = new ResultsTable();
> >> analyzer = new Analyzer(imp, measurements, rt);
> >> analyzer.measure();
> >> xpoints = [318,359,371,409,385];
> >> ypoints = [51,21,65,26,113];
> >> poly = new Polygon(xpoints, ypoints, xpoints.length);
> >> imp.setRoi(new PolygonRoi(poly,Roi.POLYGON));
> >> analyzer.measure();
> >> IJ.run(imp, "Convex Hull", "");
> >> analyzer.measure();
> >> rt.show("Results");
> >>
> >
> > When I tried to run this, I had the following error:
> > Started New_.js at Wed Sep 18 07:52:57 IST 2013
> > org.mozilla.javascript.EcmaError: ReferenceError: "Polygon" is not
> defined. (New_.js#13)
>
> You can work around this error by adding
>
> importClass(java.awt.Polygon);
>
> to the script. The JavaScript interpreter in ImageJ includes more classes
> by default than the one in Fiji. There is a list of the included classes at
>
>
http://imagej.nih.gov/ij/developer/javascript.html>
> > So I tried the following simple js which I recorded:
> >
> > imp = IJ.openImage("
http://imagej.nih.gov/ij/images/AuPbSn40.jpg");
> > xpoints = [171,250,375,84,86];
> > ypoints = [197,101,248,286,285];
> > imp.setRoi(new PolygonRoi(xpoints,ypoints,5,Roi.POLYGON));
> > imp.show();
> >
> > but then it returned an error:
> >
> > org.mozilla.javascript.EvaluatorException: The choice of Java method
> ij.gui.PolygonRoi.ij.gui.PolygonRoi matching JavaScript argument types
> (object,object,number,number) is ambiguous; candidate methods are:
> > PolygonRoi(float[],float[],int,int)
> > PolygonRoi(int[],int[],int,int) (Script.js#4)
>
> This is a stupid bug in the Rhino JavaScript interpreter that is included
> with Java. It should just choose the more general the two PolygonRoi
> constructors, the one that accepts float arrays. The latest ImageJ daily
> build (1.48d4) works around this bug by adding a
> PolygonRoi(float[],float[],int) constructor, which is now used by the
> Recorder.
>
> With the daily build, the recorded code is now
>
> imp = IJ.openImage("
http://imagej.nih.gov/ij/images/AuPbSn40.jpg");
> xpoints = [171,250,375,84,86];
> ypoints = [197,101,248,286,285];
> imp.setRoi(new PolygonRoi(xpoints,ypoints,Roi.POLYGON));
> imp.show();
>
> Example code like this that opens a sample image now runs much faster, and
> also runs offline, if you first cache the sample images using the new
> File>Open Samples>Cache Sample Images command.
>
> -wayne
>
>
> > Recording this same set of operations as a java program produces:
> > import ij.*;
> > import ij.process.*;
> > import ij.gui.*;
> > import java.awt.*;
> > import ij.plugin.*;
> > import ij.plugin.frame.*;
> >
> > public class My_Plugin implements PlugIn {
> >
> > public void run(String arg) {
> > ImagePlus imp = IJ.openImage("
>
http://imagej.nih.gov/ij/images/AuPbSn40.jpg");
> > int[] xpoints = {211,358,409,213,208};
> > int[] ypoints = {202,105,235,292,296};
> > imp.setRoi(new PolygonRoi(xpoints,ypoints,5,Roi.POLYGON));
> > imp.show();
> > }
> >
> > }
> >
> > and this works correctly
> >
> > I use the Fiji distribution, and am running these from the script editor.
> >
> > --aryeh
> > --
> > Aryeh Weiss
> > Faculty of Engineering
> > Bar Ilan University
> > Ramat Gan 52900 Israel
> >
> > Ph: 972-3-5317638
> > FAX: 972-3-7384051
> >
>
> --
> ImageJ mailing list:
http://imagej.nih.gov/ij/list.html>