2013-05-07 47 views
2

我需要運行宏,但我不想顯示圖像。如果我不調用imp.show(),ImageJ將打印到控制檯沒有打開圖像。那麼如何在不顯示圖像的情況下運行宏?提前致謝。ImageJ靜默模式 - 無需打開圖像的過程

public class MyPlugin implements PlugIn { 

public static void MyPlugin(String path) { 
    System.setProperty("plugins.dir", "libraries/plugins"); 
    System.setProperty("macros.dir", "libraries/macros"); 
    Opener opener = new Opener(); 
    ImagePlus imp = opener.openImage(path); 
    imp.show(); 
    IJ.run(imp, "Skeletonize", ""); 
    runMacroFile("libraries/macros/FindJunctions", ""); 
    imp.close(); 
} 
+0

宏文件'libraries/macros/FindJunctions'的內容是什麼?考慮將你的問題提交給[ImageJ郵件列表](http://rsbweb.nih.gov/ij/list.html),它將引起更多的ImageJ用戶和專家的關注。 – 2013-05-07 11:48:33

回答

2
  • 如果你通過把文件分成的plugins/任何子目錄讓您的宏的ImageJ的命令(如plugins/macros/Find_Junctions.ijm,看到ImageJ documentation),你應該能夠運行:

    IJ.run(imp, "Find Junctions", "");

    其中imp是您當前的圖像。但是,這不會阻止宏內的命令顯示圖像,除非宏本身設置爲setBatchMode(true)

  • 避免顯示圖像的一種更安全的方法是避免調用宏,並將宏的所有命令包含到插件中。您可以通過在插件模式下運行macro recorder來獲得所需的命令語法。

由於您的代碼示例不能編譯,並且您不提供有關要調用的宏的任何詳細信息,所以我無法爲您提供更多幫助。

+0

感謝您的回覆。我已經嘗試將文件放入插件/並將命令更改爲IJ.run(imp,「Find Junctions」,「」},但它仍然會打印:沒有打開圖像。Macro文件來自此頁面http:///image.bio.methods.free.fr/ImageJ/?Angiogenesis-Analyzer-for-ImageJ&artpage=3-5&lang=en我已經重命名它並在宏的頂部寫了「findTheNodes();」和「analyseFromATree( );「因爲我需要這兩個功能 – cernover 2013-05-08 09:43:02

+0

作爲一個ImageJ工具集,Gilles Carpentier的_Angiogenesis Analyzer_嚴重依賴於用戶界面的存在,因此需要打開並顯示圖像,恐怕只有這樣才能實現你想要的是深入研究'findTheNodes()'和'analyseFromATree()'函數,並且基本上**用Java重新實現他們的命令。但是,由於在你自己的代碼中你已經確定有一個二進制骨架在宏之前運行'Skeletonize'),你可以忽略一些處理檢查precon的宏代碼揚長避短... – 2013-05-14 20:20:45