この記事で扱っていること
- 撮影中に指定した場所にテキストを表示し保存する方法
を紹介しています。
注意:すべてのエラーを確認しているわけではないので、記事の内容を実装する際には自己責任でお願いします。また、エラー配線は適当な部分があるので適宜修正してください。
LabVIEWのアドオンソフトであるVision Development Moduleを使用すれば、カメラで撮影中に指定した場所にテキストを載せてその状態で画像を保存することができます。
何か画像上に任意のテキストとして記録をその場で残すことができ画像の特長をその場で表すことができます。
残したい記録としては、時間の情報も考えられると思います。応用とは呼べないくらい簡単なことですが、この記事の後半に時間の情報も画像ファイルに残すためのプログラムの一例を紹介します。
どんな結果になるか
フロントパネルには画像表示器にカメラの設定、そしてテキストに対するパラメタである、テキストの内容、色、場所を指定するためのROIの設定の色、そしてテキストの大きさをROIに調整するためのボタンを用意しています。このボタンはプログラムの構造上「スイッチ」動作としています。
一方、画像を保存するためのスナップのボタンも用意していますが、こちらは「ラッチ」動作としています。
今回の記事ではBMP形式で保存するようにしていますが、PNGやJPEG画像にも対応できます。
実行してから任意のテキストをテキスト入力に書き、画像上にROIを指定するとその位置にテキストを表示できます。基本的にはフォントサイズを指定している場合にはROIからはみ出すこともありますが、ROIになるべく合わせたい場合にはフォントサイズを調整ボタンを押します。
スナップボタンを押すことで、指定したファイル名の画像ファイルを記録させることができます。
このとき、ROIの枠組みは保存される画像には乗りません。あくまでテキストのみ表示された状態となります。
また、スナップを連続で押すと、指定した画像ファイル名で上書きされるのではなく、(1)、(2)などと数字がついた画像を保存するようにしているため、連続でいくつか保存したいがファイル名を変えるのは面倒、という場合にも対応できるようにしています。
プログラムの構造
カメラで撮影しながらの操作なのでWhileループにすべての機能を盛り込むようにしました。
テキストを画像に乗せるのはIMAQ Overlay Textという関数でできますが、その位置をROIで指定するためにはROIの情報をプログラム的に読み取る必要があり、ROIに関するプロパティを操作します。
ただし、ROIはそもそも画像上に設定するものなので、画像表示器に対するプロパティを指定することになります。
この時注意すべきは、プロパティノードはフロントパネル上の画像表示器では作成できず、ブロックダイアグラム上の端子でしか作成できない、という点です。
このようにプロパティノードを画像表示器に対して用意出来たら、ROIの色の設定やROIの大きさの情報を抜き出してIMAQ Overlayに渡してやります。
なお、上の図のように、保存を行う場合にIMAQ Write File2.viに画像情報を入れる前にIMAQ Merge Overlay関数を介しています。
どうやら、IMAQ Overlay Textはあくまでフロントパネルの画像表示器上にテキストを重ね合わせているだけで、実際の画像データとしては重ね合わせられていないらしく、テキストデータと合体(merge)させるためにこのIMAQ Merge Overlayを使用する必要があるようです。
もちろん、IMAQ Write File2.viは多態性なので、BMP以外の画像形式にも対応することができますが、その場合には画像ファイル名入力の後に連結する拡張子(上の図だと.bmp)も変更する必要があります。
時刻を表示する場合
上記のプログラムで任意の場所にテキストを載せることができるのですが、情報として載せるのに時刻は便利だと思います。
結局、その時点での時刻をテキスト形式にするだけなのでプログラムをほんの少し改造するだけです。
実際に動かすと、このような結果が得られます。
LabVIEWで画像を扱うプログラムは本格的な解析を行うとなると最初から組むのは難しかったりするのですが、案外簡単に実装できてしまうものもあり、今回の記事で紹介したプログラムも比較的簡単に実装できる部類になるかと思います。
ここまで読んでいただきありがとうございました。
コメント