http://imagej.273.s1.nabble.com/Headless-ImageJ2-rc2-Analyze-Particles-returns-no-result-tp5008127p5008196.html
If anyone has a more elegant solution, I would be happy to hear it.
macro recording when using the preview functionality (i.e. macro
dialog containing a Preview checkbox). See this bug for background:
> Dear Johannes,
>
> Thank you for your extensive response.
>
> On Thu, Jun 12, 2014 at 4:03 PM, Johannes Schindelin
> <
[hidden email]> wrote:
>>> I'm also trying to rewrite the macro to js, still struggling a bit with
>>> that, should the bug also be visible there?
>>
>> Yes. Both problems (that the image was not properly registered with ImageJ
>> 1.x as well as the 0 particles found problem caused by the parseDouble()
>> method being incorrect in headless mode) would persist.
>
> Hmm.. this is contratary to what I found using this script:
>
> importClass(Packages.ij.IJ)
> importClass(Packages.ij.plugin.filter.ParticleAnalyzer)
> importClass(Packages.ij.measure.Measurements)
> importClass(Packages.ij.measure.ResultsTable)
>
> imp = IJ.openImage(imagePath);
> IJ.run(imp, "8-bit", "");
> IJ.setThreshold(imp, 1, 255);
> IJ.run(imp, "Convert to Mask", ""); // How to use ij.plugin.Thresholder?
> table = ResultsTable()
> pa = ParticleAnalyzer(0, Measurements.CENTER_OF_MASS, table, 300,
> Number.POSITIVE_INFINITY, 0.4, 1.0)
> pa.analyze(imp)
> print(table.getCounter())
>
> This does work headless. However, maybe you meant running the Analyse
> particle command through IJ.run() will not work. In that case, ignore
> this comment.
>
>> Actually, my preferred way to run scripts is to call
>>
>> ImageJ-<platform> script.bsh
>>
>> or
>>
>> ImageJ-<platform> script.js
>
> Running scripts this way in pure ImageJ has been giving this exception
> for me for a few weeks. However, it does work in the daily Fiji build.
>
> Exception in thread "main" java.lang.NullPointerException
> at net.imagej.launcher.ClassLauncher.launch(ClassLauncher.java:248)
> at net.imagej.launcher.ClassLauncher.run(ClassLauncher.java:184)
> at net.imagej.launcher.ClassLauncher.main(ClassLauncher.java:76)
>
>> directly. This will not spin up a context or for that matter, ImageJ, for
>> you, but makes it possible to use ImageJ truly as a library. You would
>> probably want to start up a context anyway, like this:
>>
>> importClass(Packages.net.imagej.ImageJ);
>>
>> ij = ImageJ();
>> ij.command().run(...);
>>
>
> I'm not sure what you mean by this latest example. In which case would
> you like to use this?
>
> Thank you,
>
> Paul
>