[ImageJ-devel] Using imagej-ops to crop images

Hadrien Mary hadrien.mary at gmail.com
Sun Jan 25 13:18:36 CST 2015


Awesome ! Thanks again Mark :-)

--
Hadrien Mary

Ph.D student in Biology
Tournier-Gachet Team
CNRS - LBCMCP - UMR 5088

Université de Toulouse - Bât. 4R3B1
118, route de Narbonne - 31062 Toulouse


On Sun, Jan 25, 2015 at 7:53 PM, Mark Hiner <hiner at wisc.edu> wrote:
> Hi Hadrien!
>
>>so I am not sure wether it's a bug or it's something not supported right
>> now.
>
> It looks like it's a limitation of the DefaultDataset[1] right now. I
> updated the message to suggest a workaround, at least[2].
>
> So if you change your next to last line to:
>
> ds2 = ij.op().crop(interval, ds.getImgPlus())
>
> to crop the ImgPlus that's wrapped by the Dataset, your script should work
> (or at least not crash).
>
> Thanks, as always, for the report :)
>
> Best,
> Mark
>
> [1]
> https://github.com/imagej/imagej-common/blob/59bfc3cebf8204a48bc559adf079f227652514ed/src/main/java/net/imagej/DefaultDataset.java#L734-736
> [2]
> https://github.com/imagej/imagej-common/commit/75330a95c66013390cf4b6b4511e08357a8a28b0
>
> On Sun, Jan 25, 2015 at 9:14 AM, Hadrien Mary <hadrien.mary at gmail.com>
> wrote:
>>
>> Hi,
>>
>> I am having an issue with a script which crop an image with
>> imagej-ops. The error shows a "TODO" so I am not sure wether it's a
>> bug or it's something not supported right now.
>>
>> -------------------------------
>> # @DatasetService data
>> # @ImageJ ij
>>
>> from jarray import array
>>
>> from net.imglib2 import FinalInterval
>> from net.imglib2.img.array import ArrayImgs
>> from net.imagej.axis import Axes
>> from net.imglib2.util import Intervals
>>
>> fname = "/home/hadim/test_small.ome.tif"
>> ds = data.open(fname)
>>
>> # Initiate dimensions
>> dims = {}
>> dim_names = [None] * 5
>> for ax in [Axes.X, Axes.Y, Axes.Z, Axes.TIME, Axes.CHANNEL]:
>>     ax_index = ds.dimensionIndex(ax)
>>     dim_names[ax_index] = str(ax)
>>     if int(ds.dimension(ax_index)) == 1:
>>         dims[str(ax)] = (0, 0)
>>     else:
>>         dims[str(ax)] = (0, int(ds.dimension(ax_index)) - 1)
>>
>> # Set cropped regions
>> dims['X'] = (10, 40)
>> dims['Y'] = (5, 20)
>>
>> # Set crop intervals
>> begin_interval = [dims[name][0] for name in dim_names]
>> end_interval = [dims[name][1] for name in dim_names]
>> interval = FinalInterval(begin_interval, end_interval)
>> print(begin_interval)
>> print(end_interval)
>> print(Intervals.contains(ds, interval))
>>
>> ds2 = ij.op().crop(interval, ds)
>> ij.ui().show(ds2.getName(), ds2)
>> ----------------------------------------------------
>>
>> Error shows:
>>
>> ----------------------------------------------------
>> ds2 = ij.op().crop(interval, ds)
>> at net.imagej.DefaultDataset.factory(DefaultDataset.java:735)
>> at net.imagej.ImgPlus.factory(ImgPlus.java:280)
>> at net.imagej.ops.crop.CropImgPlus.run(CropImgPlus.java:74)
>> at org.scijava.command.CommandModule.run(CommandModule.java:201)
>> at net.imagej.ops.DefaultOpService.run(DefaultOpService.java:363)
>> at net.imagej.ops.DefaultOpService.run(DefaultOpService.java:78)
>> at net.imagej.ops.DefaultOpService.crop(DefaultOpService.java:215)
>> at sun.reflect.GeneratedMethodAccessor29.invoke(Unknown Source)
>> at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>> at java.lang.reflect.Method.invoke(Method.java:606)
>>
>> java.lang.UnsupportedOperationException:
>> java.lang.UnsupportedOperationException: TODO
>> -------------------------------------------------------
>>
>> Thank you
>>
>> --
>> Hadrien Mary
>>
>> Ph.D student in Biology
>> Tournier-Gachet Team
>> CNRS - LBCMCP - UMR 5088
>>
>> Université de Toulouse - Bât. 4R3B1
>> 118, route de Narbonne - 31062 Toulouse
>>
>> _______________________________________________
>> ImageJ-devel mailing list
>> ImageJ-devel at imagej.net
>> http://imagej.net/mailman/listinfo/imagej-devel
>
>



More information about the ImageJ-devel mailing list