#背景
僕の研究室ではオリンパスの蛍光顕微鏡を使ってオリンパスのソフトで撮影して出力している。撮影したときのファイルが__VSIファイル__で、本来ImageJ等では扱えないファイル。
でも、それを可能にしてくれているのがFijiにも付属している__OlympusViewer__というプラグインである。
上記のオリンパスのソフトでTiff出力をしたい所だが、なんか上手くいかないのでVSIファイルをImageJ(Fiji)上でTiffに変換して保存する方がその後の使い勝手が良いだろう、と言うことでちょっと開発した。
#コード
このコードはFijiのエディタで動かせるのでFijiでRunをクリックして使ってほしい。
from ij import IJ
#Run Olympus viewer
IJ.run("Options", " ")
IJ.run("Viewer", "open=")
imp = IJ.getImage()
#Save as tiff
if IJ.saveAs(imp, "Tiff", ""):
imp.close()
else:
imp.close()
内容がメチャクチャ簡単だけど一応解説。
from ij import IJ
なんか必要な奴。モジュールのインポートに必要。
#Run Olympus Viewer
IJ.run("Options", " ") #OlympusViewerの設定画面を起動、チェックを二つとも外す
IJ.run("Viewer", "open=") #Viewerを起動
imp = IJ.getImage() #開いた画像をimpという変数に収納
2行目の"open="の=の先に絶対パスを置けば画像を指定で開けるし、何も書かなければ選択画面が表示される。
#Save as tiff
if IJ.saveAs(imp, "Tiff", ""):
imp.close()
else:
imp.close()
すごく怪しい部分。
画像を開いた後立て続けに保存画面が出てくるが、名前をつけて保存を押せば勝手にTiffファイルで保存され、開いた画像は閉じられる。
一方、保存ボタンが押されなければそのままだとエラーを吐いてプログラムが止まるので、保存しなかったときにもプログラムが正常終了するようにした。メジャーな書き方では無いと思う。
ちなみにそもそも画像を開かなかったときはエラーを吐いて止まる。
#やりたかったけど出来なかったこと
○勝手に保存するシステム
保存画面で名前をつける行程すら省きたかったが、そもそもそんな必要が無い(手作業で名前つける方が色々効率的)なのと、そんな技術が無かった。
開いた画像のpathを取得する方法がわからない、それが出来ると次のアプリ開発も上手くいくんだけどナァ…