診療放射線技師がPythonをはじめました。診療放射線技師がPythonをはじめました。診療放射線技師のPython日記。解析等で使えるコードを作成、アップしていきたいと思っています。環境はじめにプログラムを組んでいて、あるキーを押したらこんな動作を組みたいなと思うことがあったのですが、キーイベントの記事がなかなか見つからなくて苦労したので、今回はそれを書いていこうと思います。広告キーイベントとはキーイベントとはキーボード上のキーを押したことによって動作を決定することで、例えばF1キーを押すことで、画像のWW,WLを頭部の条件に設定する、F2キーで肺野条件にすることや、シフトキーを押しながらマウスホイールで画像拡大をする等の機能を設定することです。今回は、簡単なF1キーを押すことで頭部条件、F2キーで肺野条件、F3キーで腹部条件、F4キーで骨条件を表示画像に適応する方法をやってみたいと思います。広告イベントキーボードのイベントは押された時と、離した時のイベントがあります。キーボードのキーが離された時イベントの設定は以下のコードで行います。イベントが発生した時の動作を記した関数)今回は押した時のイベントだけ扱います。広告コードを書くまずは、コードの流れです。画像の取り込みから表示までまずは、pydicom、numpy、matplotlibのインポートと毎回用いているfileselectのモジュール、ピクセルデータを配列に取り込むクラスのコードをコピーしましょう。画像ファイルをフォルダで一括選択しそのパスをfilenamesの変数の取り込み、クラスに渡してピクセルデータを配列に取り込みます。その後、matplotlibで画像表示領域の設定、マウスホイールを使って画像を変えていくコードまで一気に設定してしまいましょう。wheel_scroll)plt.show()イベントで返される変数を調べるそれでは、キーイベントの設定をします。書いていきましょう(関数名は何でも構いません)。キーが押された時、どのように変数が返ってくるのか確認します。key_press)plt.show()いかがでしたか?F1、F2、shiftキー等押すと上記図のような変数が返ってきます。ちなみに、’super’とはwindowsマークを押した時のeventです。返ってくる変数が分かったので、機能を実装していきたいと思います。機能の実装それでは、機能を実装していきます。cmap=’bone’)の部分に、画像の最小値と、最大値を指定するコードを追加します。これは、画像のWWに当たるところですので変数名を最小値をww_L、最大値をww_Hとして指定したいと思います。cmap=’bone’)それでは、キーが押された時の設定に入ります。3000ww_Lとww_Hの設定はそれぞれ以下のようになります。key_press(event)の関数は以下となります。cmap=’bone’)fig.canvas.draw()を付け足してあげることで画像条件を変更するプログラムは完成です。気づかれた方もいると思いますが、条件を変更してもマウスホイールで画像を切り替えてしまうとまた、条件が元に戻ってしまうんです。何が原因かというと、画像を表示するコードが複数ある事で設定し忘れているところがあるんです。現在作成したコードでは41行目と、58行目に画像表示設定があるわけなのですが41行目にはvminとvmaxの指定をしていないのです。この様に、同じコードを何度も使う場合はその部分を関数化してしまうのが間違いがなく、しかも設定が楽になりますので関数化してしまいましょう。58行目から60行目までを関数化します。cmap=’bone’)fig.canvas.draw()上記関数を作成し、62行目辺りに入れます。(44行目に入れても構いません)ただ、今の状態だとvminとvmaxの変数はkey_pressの中でだけ有効なのでglobal化しておきましょう。ww_Hと記載しておきます。41~43行目、58~60行目をimg_show()と書き換えることで完成ですが、どうせなので、初期設定も腹部条件で表示させるようにも設定しておきましょう。24071行目のコードをimg_show()としてあげましょう。することで画像表示の設定はimg_show()の関数内の設定だけで完了します。完成コードを以下に示します。key_press)plt.show()最後に皆さんいかがでしたか?今回は、ファンクションキーに画像条件のプリセット機能を付けてみましたが、その他にも、シフトキーを押しながらマウスホイールで画像拡大とか使い道はいろいろあります。使ってみてくださいね。診療放射線技師がPythonをはじめました。