我在Java應用程序中,在那裏我看不見的模式下運行的ImageJ使用ImageJ 1.x API:ImageJ API:如何訪問java代碼中的直線選擇對象?
ImageJ imageJApplication = new ImageJ(2);
在我的Java應用程序,我產生幾個圖像,並打開他們的用戶交互:
Opener opener = new Opener();
String imageFilePath = getLastImageFilePath();
ImagePlus imp = opener.openImage(imageFilePath);
imp.show();
我提供用戶可以在任何打開的圖像上進行直線選擇:
IJ.setTool(4);
如果用戶有在圖像上畫出一條直線,然後我需要得到這條線的長度。爲此,我嘗試訪問由用戶交互產生的直線選擇對象。不幸的是,我不知道ImageJ在哪裏創建並保留這個對象。
我認爲它應該是ij.gui.Line
類(擴展ij.gui.Roi
的類)的對象。我知道要在java程序中自己繪製一個Roi
類型對象,我將創建一個ij.gui.Overlay
實例,將Roi
對象添加到疊加層,然後將覆蓋層設置爲我的目標實例ImagePlus
。所以,我試圖尋找直線選擇的對象在我打開的圖像的疊加:
ImagePlus imp = WindowManager.getCurrentImage();
double lineLength = 0;
Overlay overlay = imp.getOverlay();
if (overlay!=null){
for (int i = 0; i < overlay.size(); i++){
if (overlay.get(i).isLine()){
Line currentImageLine = (Line) overlay.get(i);
lineLength = currentImageLine.getLength();
}
}
}
但在用戶已經畫出的直線電話imp.getOverlay()
以上的回報null
代碼的圖像。因此,顯然,覆蓋圖是找到用戶生成的直線選擇對象實例的錯誤地方。有人知道,如何訪問直線選擇對象?
這正是我所期待的。坦克你非常!也感謝您參考ImageJ論壇。我沒有意識到這一點。 – croset3