2013-04-10 64 views
1

我在斐濟寫了一個宏,對特定文件夾中的所有圖像執行一組操作。但是我遇到了麻煩,無法克服一個問題。我運行宏時收到一條錯誤消息,說'沒有圖像打開'。這是什麼意思? (輸入文件夾中的影像。TIF類型)有沒有圖像打開 - 斐濟/ ImageJ宏語言

這裏的宏:

input = "C:"+File.separator+"Winter Quarter slides"+File.separator+"CTIA"+File.separator+"Project"+File.separator+"Original Image data"+File.separator+"Input Images"+File.separator; 

output = "C:"+File.separator+"Winter Quarter slides"+File.separator+"CTIA"+File.separator+"Project"+File.separator+"Original Image data"+File.separator+"Output Images"+File.separator; 

setBatchMode(true); 
list=getFileList(input); 
for(i=0; i<list.length; i++) 
    action(input,output,list[i]); 
setBatchMode(false); 

function action(input,output,filename) { 
    open(input+filename); 
    run("16-bit"); 
    run("Gaussian Blur...", "sigma=3"); 
    setAutoThreshold("Otsu"); 
    //run("Threshold..."); 
    setAutoThreshold("Otsu"); 
    setOption("BlackBackground", false); 
    run("Convert to Mask"); 
    run("Close"); 
    run("Watershed"); 
    saveAs("Tiff", output+filename); 
    close(); 
} 

close(); 

是否有人可以幫助我儘快它? 謝謝!

回答

0

我沒有使用宏語言,但在Java中開發時發現了這個錯誤。一些插件需要顯示圖片。

如果圖像在open(input+filename);之後沒有顯示,那麼您需要運行顯示功能來顯示圖像。

你做

run("Close"); 
run("Watershed"); 
saveAs("Tiff", output+filename); 

所以你關閉圖像,然後嘗試做一些事情來這將產生錯誤的圖像。

+0

嗨!實際上,關閉那裏關閉autotreshold對話框而不是圖像。該代碼中的圖像仍處於打開狀態,但錯誤仍然存​​在。 – 2013-04-11 19:19:51

+0

最後關閉()?怎麼樣?是不是所有的圖像關閉,所以沒有什麼可以關閉()? – 2013-04-11 19:39:56

+0

是啊!它現在有效。我刪除了最後的關閉。但在某個地方似乎仍然存在問題。我沒有看到任何錯誤,但是我看不到輸出目標中的輸出文件。這是因爲我把那個關閉了嗎?我哪裏錯了? – 2013-04-11 20:53:18

0

會導致此錯誤的另一件事是輸入目錄中的非圖像文件。您循環瀏覽文件夾中的所有內容並將其視爲圖像。如果有例如一個文本文件,open(input+filename)的結果將不會是一個開放的圖像。

+0

我在目錄中只有圖像文件,但感謝指針。下次要記住! – 2013-04-11 19:21:19

0

當幾個窗口打開時,宏命令需要定義要處理的窗口。

在我的微型我使用; selectWindow( 「imagename」);在命令之前。這應該快速解決問題。