(1)VFW(Video For Windows) APIを使っていますので,確認はしていませんが,各メーカーのUSB
Webカメラだけでなく,Windowsにつながるカメラならどれでも使えるのではないかと思います。カメラを接続した状態でWebcam
Get Digitizer.viを走らせて,digitizers配列表示器にdigitizerIDが現れれば使えると思われます。
(2)Microsoft社は今後VFWのサポートをしないそうですので,将来,Windows XP以降のOSになった場合は使えなくなります。DirectShowに移行することになりますが,それまでに,どなたかがDirectShowでのLibraryを作成されるのを期待しています。
(3)インストールはPeter Parenteさんの説明(README.pdf)を参考にしてください。ただし,以下の内容も参考にしてください。
(4)LabVIEW Webcam Libraryからダウンロードした,元のWebcamGrab.dllから作成されたWebcam Capture.llbは,私の環境ではうまく動作しませんでした。わかる範囲での修整と,Libraryの問題点を以下に示します。
(5)Cソースコードを修整したいと思いましたが,もとのdll.cと,ワークスペース設定dll.dswなどを用いてMicrosoft
VC++ 6.0で再ビルドしたところ,環境が異なるのか動作しませんでした。ここからダウンロード(529 kB)できる圧縮ファイルは,再ビルドできるようにCソースコードとワークスペース設定を修整してありますが,完全に正しいかどうかはわかりません。一応,再ビルドの結果は正常に動作することを確認してあります。圧縮ファイルには,修整したCソースコードからdllまで,すべて入っています。
動作チェックは,Webcam Example.llbの中の,Webcam Continuous Capture2.viか,Webcam
Continuous CaptureN.viで行ってください。
(6)キャプチャデバイス初期化用のWebcam Initialize2.viでの待ち時間を,元の500ms→2000msと,少し長めに修整してあります。これでも,VIの起動と停止を短時間に繰り返すとLabVIEWがクラッシュします。どうも処理の競合が発生しているようで,他にもどこか時間待ちする必要がありそうです。
(7)存在しないカメラIDを一旦指定すると,その後,存在するカメラIDに戻しても正常に動作しません。一旦,VIを閉じる必要があります。このエラーは,Cソースコードの,イメージングデバイスの初期化用SetUP関数のcapDriverConnectで発生していることまではわかっていますが,修整する方法がわかりません。
(8)Cソースコードの,キャプチャフレームをバッファに移すGrab関数では,イメージングデバイス画素の最後から先頭に向かってフレームバッファのコピー処理が行われているため,表示画像の上下はあっていますが,左右が反転して鏡像になっています。スキャン方法が異なり,正常に動作するカメラもあるのかと思い,そのままにしてありますが,正像のVIもWebcamGrabN.viとして作成しておきました。
(9)Peter ParenteさんもWebサイトのFAQで説明されているように,取り込み画像の大きさを変更することが困難で,640×480のWebカメラを用いても320×240の画像しか取り込めませんでした。Webcam
Initialize2.viのwidth, height値はダミーですので,これを変えても,表示画像がおかしくなるだけで,画像サイズの変更はできません。
(10)パソコンの性能に関係なく,オート露出コントロール機能があるWebカメラでは,暗いところではfps値が小さくなりますので,できるだけ明るくして撮像してください。
(11)さらに改良される場合は,NI社のテクニカルノート「Using External Code
in LabVIEW」を参考にしてください。