首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >控制已经存在的ImageJ实例

控制已经存在的ImageJ实例
EN

Stack Overflow用户
提问于 2015-10-08 18:39:56
回答 1查看 384关注 0票数 1

首先,我不太精通Java。事实上,我正在使用JLink/Mathematica来做我想做的事情。

在我们的实验室里,我们用数学控制的相机拍摄实验的照片。我们想把我们的图像显示程序转换成ImageJ。另一个程序是内存占优势,而且速度很慢。

根据我的研究,我可以通过编写插件、脚本或宏来实现这一点。我也有这样的印象:我写的任何东西都将安装到ImageJ中,并由默认的GUI控制。

我的问题是,我能否编写一个控制已经运行的ImageJ实例的外部程序?理想情况下,事件的顺序是。

  1. 摄像机通过一个已经存在的脚本捕捉图像。
  2. 图像捕获脚本要求ImageJ显示捕获的图像,以及默认的GUI,这样我就可以访问默认工具集了。
  3. 我可以通过默认的GUI来绘制一些概要图和直方图。
  4. 将图像交给ImageJ的脚本是关闭的,但是ImageJ上的图像被保留了。

我已经成功地导入了ImageJ的ij类并使用它。下面是我在ImageJ中创建图片的尝试。它在Mathematica的JLink中,但对Java来说是可以翻译的。

代码语言:javascript
复制
Needs["JLink`"];
InstallJava[];
AddToClassPath["C:\\Program Files\\ImageJ\\ij.jar"];
ijClass = LoadJavaClass["ij.IJ"];
imagePlusClass = LoadJavaClass["ij.ImagePlus"];
JavaNew[imagePlusClass, "My New Image", 
  JavaNew["ij.process.ByteProcessor", 400, 400]]@show[]
ij`IJ`log["test"];
ij`IJ`getLog[]

然而,所创建的映像是在某种Java窗口中创建的。已经在运行的imageJ根本不与它交互。此外,我似乎可以使用getLog[]捕获已经运行的getLog[]的日志。

同样,问题是,我是否可以使用未安装在ImageJ中的外部脚本作为插件、脚本或宏在已经运行的ImageJ上显示映像?或者,我可以使用外部脚本来调用已经运行的ImageJ实例上预装的宏吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-09 21:08:51

你想要做的事情叫做进程间通信。ImageJ具有将信息传递给正在运行的实例的机制。去编辑▶Options▶Misc..。并选中“运行单个实例侦听器”框。但是,此特性仅限于命令行参数。因此,您可以告诉正在运行的实例打开磁盘中的映像,方法是尝试使用所需的参数启动第二个ImageJ (然后将其传递给正在运行的实例)。但是你不能直接在线路上给它输入像素--你必须把它们写到临时文件中。

您最简单的选择是通过ImageJ完成所有操作。但这并不是从你目前的场景中最容易跳出来的,在混合的数学场景中。

所以,下一件最简单的事情就是从Mathematica启动ImageJ,并始终与相同的ImageJ实例进行通信来完成所有事情。也许你能做到?

如果必须与外部启动的ImageJ实例通信,则需要使用我前面提到的CLI参数传递方案,或者实现某种类型的自己的进程间通信方案

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33023534

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档