在 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)
如果 combineHorizontallyStackCombinerstatic 方法,

会起作用,但事实并非如此,它需要先实例化一个新的 StackCombiner 对象。

Java中,你必须写成:

new StackCombiner().combineHorizontally(a,b)

Python中,不需要new关键字,但仍然需要使用constructor:

StackCombiner().combineHorizontally(a,b)

相比之下,ChannelSplitter.split(ImagePlus) methodstatic,所以不用实例化对象就可以使用。