【问题标题】:Combine channels in ImageJ Jython?在 ImageJ Jython 中合并通道?
【发布时间】:2018-01-11 18:34:02
【问题描述】:

我有两个来自图像堆栈的通道,我已经像这样拆分了:

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 导入的。有人能解释一下吗?

【问题讨论】:

    标签: python jython imagej


    【解决方案1】:

    解决了。

    很高兴你找到它。对于未来,像这样的问题仍然很适合 ImageJ forum(您似乎也有 account),尤其是当您询问 ImageJ API 的细节时。

    为什么这需要一个额外的 () 而 ChannelSplitter 不需要,对我来说是个谜。

    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,因此您可以在不实例化对象的情况下使用它。

    【讨论】:

      猜你喜欢
      • 2016-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-27
      • 2014-02-22
      相关资源
      最近更新 更多