Login  Register

Re: Trouble with active windows within a loop

Posted by Michael Schmid on Apr 05, 2018; 8:34am
URL: http://imagej.273.s1.nabble.com/Trouble-with-active-windows-within-a-loop-tp5020382p5020384.html

Hi Samantha,

IJ.getImage() returns the current image, but you don't use it and you
don't want to work on it anyhow, rather on the current image 'img' of
the loop.

IJ.run("8-bit") works on the current foreground image, which is always
the same.
You can try
   IJ.run(img, "8-bit", "");
to run the "8-bit" command on the current image 'img'.
(The last argument would be any options from a dialog; the "8-bit"
command has none, so it is an empty String)

Michael
________________________________________________________________

On 04/04/2018 22:42, moxed wrote:

> Scripting newbie here, having trouble calling windows to the front in a for
> loop. As a brief example, I'm trying to write a script (jython) that will
> loop through an array of images and convert them to 8-bit and also set a
> particular threshold.
>
> I can't seem to get the convert to 8bit command to work on all images in the
> array. It looks like only the last image is acted upon.
>
> I think I need to be able to call an image to the front, using the image
> title or ID, but I can't figure out how to do that. Any advice would be
> great.
> (In my real code there are a number of more manipulations, and also more
> than 2 files being processed)
>
>      import os
>      from java.io import File
>      from ij import IJ, Macro, ImagePlus, WindowManager
>      from ij.process import ImageStatistics as IS, ImageProcessor
>      from ij.measure import Measurements
>      from ij.process import ImageConverter
>
>
>      wt_path = "C:/wt.tif"
>      dic_path = "C:/dic.tif"
>
>      wt = IJ.openImage(wt_path)
>      dic = IJ.openImage(dic_path)
>
>      imp = [wt, dic]
>
>      for img in imp:
>          IJ.getImage()
>       IJ.run("8-bit")
>       if img == dic:
>       maxThreshold = wt.getStatistics(Measurements.MIN_MAX).max
>       IJ.setThreshold(0.50*maxThreshold, maxThreshold)
>       print img, "mxt=", maxThreshold
>       else:
>       maxThreshold = img.getStatistics(Measurements.MIN_MAX).max
>       IJ.setThreshold(0.20*maxThreshold, maxThreshold)
>       print img, "mxt=", maxThreshold
>
>
>      print end
>
> The threshold function works perfect, but I can't for the life of me get the
> 8 bit to run.  Only the last image in the array `dic` is converted.
>
> I've also tried:
>      for img in imp:
> ImageConverter.convertToGray8(img)
>
> But that throws an error:
>> TypeError: convertToGray8(): self arg can't be coerced to
>> ij.process.ImageConverter
>
>
> I can't figure out how to call a specific image either by window title or by
> image ID.
>
>
>
> --
> Sent from: http://imagej.1557.x6.nabble.com/
>
> --
> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html