撮影中画像にペイント機能を使用する

Tips

スポンサーリンク

この記事で扱っていること

  • 撮影中画像にペイント機能を使用する方法

を紹介しています。

LabVIEWによる画像撮影は、有償アドオンであるVision Acquisition Softwareを使用するのが便利ですが、これを使ったときに撮影した画像をフロントパネル上に表示させるには通常、専用の表示器である画像表示器を使用します。

ただ、画像データを2次元配列に変換することは関数一つででき、ピクチャ表示器に映すこともでき、そこからペイント機能を追加するのはLabVIEWに初めから用意されたペイント用サンプルを使用すればすぐにできるので、これを試してみました。

スポンサーリンク

どんな結果になるか

フロントパネルにはペン属性とサブセットのサンプルをベースにしていますが、ピクチャの大きさが右下方向に変動する都合上、配置を変えています。

プログラム実行時、画像を撮影して、そこにその場で文字や絵を描くことができます。

プログラムの構造

今回使用するサンプルは、私のブログで最も使用頻度の高い、ペン属性とサブセットのサンプルです。

このサンプルを別名保存し、カメラ撮影のためのプログラムを追加してやります。

撮影部分に関しては、Grabの関数で得た画像データを2次元配列に変換し、さらにここからピクチャに変換します。

このとき、撮影した画像全体がピクチャに表示されるように、ピクチャの描画サイズプロパティを使用して、撮影画像の大きさの情報を入れます。

途中で撮影画像の大きさが変わることはないかもしれませんが、一応サイズが変更になったらピクチャの大きさも変わるようにしました。

この画像撮影の部分とサンプルのプログラムを合わせるために、今回はユーザイベントを使用しました。

ユーザイベントはプログラム的に特定のイベントを発生させることができる機能で、画像が得られたことをイベントとして登録します。

このイベントが発生したら「撮影画像」用のピクチャを更新、それ以外のイベントでは、最後に得られていた撮影画像ピクチャを使用するために、フィードバックノードと選択関数を使用しています。

プログラムを止めるのもイベント的に行うために、こちらもユーザイベントを用意しています。

画像を保存する場合

ペイント的に描画した情報含めピクチャを保存するには、保存ボタンを追加してそのためのイベントを用意します。

手っ取り早い方法としては、ピクチャのローカル変数を使用することです。

非同期処理でこの場限りの使用になるので、ローカル変数で十分です。

例えば保存ボタンを押した時間、タイムスタンプのデータを保存画像ファイル名にする場合には以下のように文字列にフォーマット関数を使用します。

本記事では、撮影中画像にペイント機能を追加する方法を紹介しました。

画像を撮影して一部を強調させるといった場面は少なからずあると思うので、保存方法も含め、サンプルを使用することで簡単に実装できるプログラムとして参考になればうれしいです。

ここまで読んでいただきありがとうございました。

コメント

タイトルとURLをコピーしました