10-13-2015 11:36 PM
リニアタイムで撮影している動画を画像として連続的に保存したいと考えております。
利用しているものはimaging source社のusbカメラを用いています。
私はlabviewのビギナーでありwebで勉強しながらやってみたのですが、IC拡張のドライバはインストールしたものの実行し保存されるものは1枚でIC captureで設定した背景のみの画像しか保存されません。
ハチャメチャなプログラムかと思いますが添付いたします。
ご教授お願いいたします。
10-15-2015 05:00 AM
こんにちはshuntaroさん。
個人的にはそのカメラがNIのサポートするカメラなのであればIMAQdxでGrabしてそのループの中でIMAQ関数でimageとして保存すればできるのではないかと考えています。
ちょうど下記のサンプルのような方法です。
所有しているカメラはナショナルインスツルメンツでサポートされていますか。
http://digital.ni.com/public.nsf/allkb/FE9E69EA8C85EF4986257D0D004F48E8
[Sample]IMAQdx Grab and Save Individual Files
https://decibel.ni.com/content/docs/DOC-19537
また拡張ドライバはimaging source社のものでしょうか?
もしそうならimaging source社に使い方を聞いてみるのもいいかもしれません。
10-16-2015 10:10 AM
VIを開いても、IMAQdx関連のものがなかったので、
おそらくimaging source社の関数をお使いと推測しています。
IMAQdxの場合はsnapとgrabの2種類がありまして、前者が1枚の画像を撮る挙動、
後者が連続画像を撮る動作になっています。
imaging source社でも同じ関数を準備していれば、そのような種類の関数があるかもしれません。
この問題についてはimaging source社に聞かなくてはわからない問題かとおもいますが、
IMAQdxを使うことでDirectShow対応のカメラであれば、画像集録ができる可能性がありますので、
そちらで試すと、場合によってはうまく撮れるかもしれません。
評価版の状態であれば数日無料で試せますので、よければ試してみてください。
10-17-2015 05:39 AM
ところでカメラのモデル名は何でしょうか?また、VIをファイルメニュー内の「旧バージョンで保存」で2~3バージョン前の状態で保存したほうが多くの人の意見が聞けると思いますよ。
ちなみにこんなものがあるようです。
LABVIEW EXTENSION FOR IC IMAGING CONTROL
http://www.theimagingsource.com/en_US/support/downloads/details/icextlvi/
インストールしてみましたが、一応サンプルVIが入っているようです。ただ、なぜかインストールされるサンプルが「IC LabVIEW Extension 3」フォルダにあり、user.libフォルダにあるllbが「IC LabVIEW Extension 2.llb」となっています。なんでしょうね。一部64-bit OS向けのサンプルしか無いようですし。
これはメーカに直接問い合わせていただく必要があると思います。NI社に問い合わせても答えはありませんのでお気をつけください。
10-18-2015 10:42 PM
ありがとうございます。
IMAQdxのJPG保存のVIを使ってwhileループを組むことで連続的な保存は可能となりました。
使用しているカメラは他社製なのですが、imaginng source社のアナログ変換器をカメラとの間に挟んでいます。
10-18-2015 10:44 PM
10-18-2015 10:48 PM
高須さん
ありがとうございます。
モデル名はDFG/USB2proです。
添付していただいたURLの方からインストールはしていたものの、設定の同期に手こずっております。
連続的には取得が可能になったのですが、カメラのフレームレートに合わせて取得することができず困っております。
iaging source社にも問い合わせてみますが、設定を同期する方法などご教授いただけたら幸いです。
10-23-2015 05:25 PM
すみません、「設定の同期」とはどういったことでしょうか。私はImaging source社製品は使ったことがないのでお役に立てるか分かりませんが、具体的にどこが分からないのかスクリーンショットやVIを添付して頂けると他の方のアイデアももらいやすくなると思います。
よろしくお願いします。
10-25-2015 10:05 PM
高須様
フレームレート通りに画像を取得することは困難なようで、何枚かおきにフレームレートに合った画像を取得しようと考えました。
しかし、そのフレームレートに対する設定がどこから行えるのかがわからず困っております。
設定の同期は、カメラにおけるフレームレートをPCから制御できないかと考えました。
添付したVIの画像ではwhileループに遅延時間を設けていますが、これだと、カメラで動画像として取得されるものとはフレームレートがあっておらず正確な画像ではありません。
フレームレートで取得されたデータのうち数枚飛ばしに画像化していきたいのですがどのような方法がございますでしょうか。
宜しくお願いいたします。
10-27-2015 09:39 PM - 編集済み 10-27-2015 09:50 PM
shuntaro様
日本ナショナルインスツルメンツ技術部 荒深と申します。カメラのフレームレートの設定ですが、
MAX(Measurement & Automation Explorer)で行うことが出来ます。
MAXを立ち上げていただき、添付画像のように設定すると、解像度に合わせたフレームレートが
カメラごとに決められていると思いますので、選択肢の中から選ぶ形になります。
通常であればUSBカメラはMAXの左側の「マイシステム」⇒「デバイスとインターフェース」の下に表示されます。
USBカメラを一度クリック後、真ん中の下側にあるAcquition Attributesのタブをクリックし、Video Modeの選択肢から選びます。
ここに出てくる選択肢の解像度+フレームレートしか選ぶことができません。
ただし、ここで設定したフレームレートで実際に集録できるかどうかは、VIのプログラムの作り方や、
Windowsのその他のタスクの影響を受けますので、このフレームレートより下がることがございます。
実際のフレームレートの求め方を2つ目の添付画像に記載しておきましたので、
参考にしていただければと思います。一度、ループレートを求めてから逆数を取り、
実際のフレームレートを出しています。波形チャートに接続すると、フレームレートが
どのように推移しているかがよく見れるかと思います。
数枚飛ばしに画像を取得し保存する方法ですが、例えば2つ目の添付画像の上側のような方法はいかがでしょうか?
mizutagain様が紹介してくれた画像の連続保存のサンプルのやり方を使い、「商&余り」関数の余りの値を使っています。
添付画像の例では、商を5に設定しており、カウント端子からの値を5で割り、その余りが0の場合は5の倍数になります。
余りが0の時を「等しい?」関数を使い、0と等しいかを判断することで、5の倍数のループ回数の時だけ画像を保存し、
ファイル名も5の倍数になります。
添付ファイルのプログラムで私の環境で試してみると、20フレーム/秒から50フレーム/秒の間で推移して集録し、
5の倍数になったJPEGファイル名が出来がありました。
上記のやり方を一つの参考例として頂ければと思います。宜しくお願いします。
日本NI 技術部
荒深 容好