診療放射線技師がPythonをはじめました。診療放射線技師がPythonをはじめました。診療放射線技師のPython日記。解析等で使えるコードを作成、アップしていきたいと思っています。前回、OpenCVを用いてマウスホイールを使って画像を切り替えるといった記事を書きました。そのままではつまらないので、DICOM画像をjpeg,pngといった汎用画像として保存する方法を記載したいと思います。手順としては、DICOM画像を読み込みピクセルデータを配列として読み込みww、wlで最適な条件に合わせるその配列をww、wlの範囲に落とし込む汎用画像として保存の手順となります。前回までの記事で1~4までの作業は完了しいるので残り5番の作業となります。(前回のコードは下のリンクから)http://radiology-technologist.info/2020/04/17/post-501/それでは、5番の作業をさらに細かく分けていきましょう。何をきっかけに画像保存をするか?保存先の指定は?ファイル名は?画像形式は何にするか?コードを作成それでは、それぞれ決めていきましょう。何をきっかけに画像保存をする?まずは、何をきっかけに画像保存をするか?せっかく前回マウスイベントで作業をしたので今回もマウスイベントで画像保存する方法をやっていきましょう。右クリックを押した時に、画像保存ができるようにします。cv2.EVENT_RBUTTONDOWN:でできます。前回のマウスホイールを回した時の関数の後に記載します。cv2.EVENT_MOUSEWHEEL:と同じ位置にします。保存先の指定は?新しく作成する画像の保存先の指定はどのようにするか?それはユーザーが指定できるように組みたいと思います。右クリックを押した時に、ファイルダイアログが開いて画像の保存フォルダを指定できるようにします。これも以前、記事で書いたフォルダ選択でやってみたいと思います。http://radiology-technologist.info/2019/12/21/post-371/以前の記事では、フォルダ内のファイル全部を選択する形となっていたので少しそこを修正、追加して使いたいと思います。前回のコードは以下となります。filenamesこの関数を呼び出すことでフォルダの指定ができます。フォルダパスはfolという変数名で受け取るようにします。fs.folder()とすることでfolの変数内に指定したフォルダパスを入れることができます。ファイル名は?ファイル名ですが、DICOM画像と同じ名前で保存する方法としましょう。ファイル選択したパスからファイル名だけを抽出する方法は以下の記事に記載してあります。何文字目にあるかを調べます。そのファイルパスから、その文字分だけ切り抜いてあげ、先ほど選択したフォルダの後ろにつけてあげればいいわけです。変数couとして画像ファイル名の前にある”/”までの文字数を入れます。filenames[i].rfind(“/”)(なお、[i]は後でfor文の中でこのコードを使うので入れています。)その数字文ファイルパスから抜き出せばいいのでfilenames[i][cou:]これで、ファイル名の抜き出しが完了です。画像形式は何にするか?画像形式は、jpg,png,bmp,tiffどの形式にするか決まったら、保存する時、パスの最後に付けてあげればいいだけです。“.tiff”これだけで、画像形式の指定が終わりです。次は、画像を保存していく工程になります。cv2.imwrite(ファイルパス,データ)のコードで行います。保存先のファイルパスを作成します。ファイルパスは、画像保存のフォルダにファイル名、拡張子を付けて作成します。保存フォルダはfolの変数名で取得しましたね。filenames[i].rfind(“/”)filenames[i][cou:]の2文で抜き出しができました。“.jpg”となります。画像データはdcm_copyとなります。“.jpg”cv2.imwrite(fname,dcm_copy&#91;i])これでコードは完成しました。ここで問題があります。今作成しているコードはマウスイベントの関数内でありますので、関数外で宣言しているfilenamesおよび、画像表示に作成した配列dcm_copyは使用できません。これを使うにはglobalで宣言しておかなければなりません。マウスイベントの関数を宣言した直下に宣言を追加します。前回のコードでgという変数を宣言したと思いますが、その後に追加します。g,dcm_copy,filenamesこれで、関数外で宣言していたfilenamesおよび、dcm_copyが使えるようになりました。ord(‘q’):breakとなります。いかがでしたか?お疲れ様でした。tiff診療放射線技師がPythonをはじめました。