在 ImageJ Jython 中组合通道?
Combine channels in ImageJ Jython?
我有两个来自图像堆栈的通道,我是这样拆分的:
red_c, green_c = ChannelSplitter.split(imp)
现在我想把它们横向组合起来:
combined_img = StackCombiner.combineHorizontally(green_c, red_c)
这会抛出一个错误,指出需要 3 个参数,但只提供了 2 个。但是从文档中可以看出 combineHorizontally(ImageStack stack1, ImageStack stack2)
为什么这不起作用?
编辑:解决了。原来正确的写法是
combined = StackCombiner().combineHorizontally(grn_stack, red_stack)
为什么这需要一个额外的 ()
但 ChannelSplitter 不需要,这对我来说是个谜。它们都是从 ij.plugin
进口的。有人可以阐明这一点吗?
solved it.
很高兴你找到了。对于未来,像这样的问题仍然非常适合 ImageJ forum (where you seem to have an account),特别是当您询问 ImageJ 的细节时 API.
Why this needs an extra () but ChannelSplitter doesn't is a mystery to me.
ImageJ 是一个 Java 应用程序,在您的 Jython 脚本中,您实际上是在调用 Java API of StackCombiner
。来电
StackCombiner.combineHorizontally(green_c, red_c)
如果 combineHorizontally
是 StackCombiner
的 static
方法, 会起作用,但事实并非如此,它需要先实例化一个新的 StackCombiner
对象。
在Java中,你必须写成:
new StackCombiner().combineHorizontally(a,b)
在Python中,不需要new
关键字,但仍然需要使用constructor:
StackCombiner().combineHorizontally(a,b)
相比之下,ChannelSplitter.split(ImagePlus)
method是static
,所以不用实例化对象就可以使用。
我有两个来自图像堆栈的通道,我是这样拆分的:
red_c, green_c = ChannelSplitter.split(imp)
现在我想把它们横向组合起来:
combined_img = StackCombiner.combineHorizontally(green_c, red_c)
这会抛出一个错误,指出需要 3 个参数,但只提供了 2 个。但是从文档中可以看出 combineHorizontally(ImageStack stack1, ImageStack stack2)
为什么这不起作用?
编辑:解决了。原来正确的写法是
combined = StackCombiner().combineHorizontally(grn_stack, red_stack)
为什么这需要一个额外的 ()
但 ChannelSplitter 不需要,这对我来说是个谜。它们都是从 ij.plugin
进口的。有人可以阐明这一点吗?
solved it.
很高兴你找到了。对于未来,像这样的问题仍然非常适合 ImageJ forum (where you seem to have an account),特别是当您询问 ImageJ 的细节时 API.
Why this needs an extra () but ChannelSplitter doesn't is a mystery to me.
ImageJ 是一个 Java 应用程序,在您的 Jython 脚本中,您实际上是在调用 Java API of StackCombiner
。来电
StackCombiner.combineHorizontally(green_c, red_c)
如果 combineHorizontally
是 StackCombiner
的 static
方法, 会起作用,但事实并非如此,它需要先实例化一个新的 StackCombiner
对象。
在Java中,你必须写成:
new StackCombiner().combineHorizontally(a,b)
在Python中,不需要new
关键字,但仍然需要使用constructor:
StackCombiner().combineHorizontally(a,b)
相比之下,ChannelSplitter.split(ImagePlus)
method是static
,所以不用实例化对象就可以使用。