Grabber::snapImages Method [非推奨]
イメージストリームよりアクティブなMemBufferクラスライブラリリファレンス>クラス>MemBufferにイメージを取り込みます。
構文
bool snapImages( DWORD count = 1, DWORD timeout = 0xFFFFFFFF );
パラメータ | 説明 |
---|---|
count | MemBufferCollectionクラスライブラリリファレンス>クラス>MemBufferCollectionに取り込むフレームの数を指定。 |
timeout | 以下の状況におけるタイムアウト時間をミリ秒で指定します。 1. デバイスがデータを送ってこない (e.g. ExternalTransportの設定が停止になっている)。 2. イメージのコピー処理に時間がかかり過ぎている。 3. 全てのバッファがロックされている。 4. ユーザーコールバックに時間がかかり過ぎている。 もしtimeoutが == 0xFFFFFFFFの場合メソッドは待機し続けます。 |
戻り値
イメージの取り込みが正常に行われた場合はtrue、そうでない場合はfalse。
備考
このメソッドは指定された長さでの連続したイメージを取り込みMemBufferCollectionクラスライブラリリファレンス>クラス>MemBufferCollectionに格納します。このメソッドをコールする前にGrabber::startLiveクラスライブラリリファレンス>クラス>Grabber>Grabber::startLive Methodがコールされる必要があります。
取り込んだ画像データへアクセスするには方法が2つあります。
- アクティブなMemBufferCollectionクラスライブラリリファレンス>クラス>MemBufferCollectionを使用します。Grabber::getActiveMemBufferCollectionクラスライブラリリファレンス>クラス>Grabber>Grabber::getActiveMemBufferCollection Methodをコールすることで取得可能です。
- アクティブなMemBufferクラスライブラリリファレンス>クラス>MemBuffer を使用します。Grabber::getActiveMemBufferクラスライブラリリファレンス>クラス>Grabber>Grabber::getActiveMemBuffer Methodをコールすることで取得可能です。
メモリバッファコレクションはリングバッファとして使用されます。
詳細についてはMemBufferCollectionクラスライブラリリファレンス>クラス>MemBufferCollectionをご参照ください。
GrabberListenerクラスライブラリリファレンス>クラス>GrabberListener オブジェクトを使用する場合、取り込み中のフレームの処理が完了した時点でGrabberListener::frameReadyクラスライブラリリファレンス>クラス>GrabberListener>GrabberListener::frameReady Methodがコールされます。
あるいはGrabber::setCallbackクラスライブラリリファレンス>クラス>Grabber>Grabber::setCallback Method を使って取り込み中のフレームの処理が完了した時点でコールバックを呼び出すようにすることもできます。ただしこれらの2つの方法を同時に使用しないでください。
コールバックやGrabberListener::frameReadyクラスライブラリリファレンス>クラス>GrabberListener>GrabberListener::frameReady Methodメソッドが全フレームごとに必ずコールされるということは絶対に保証されているわけではありません。使用しているコンピュータの処理能力やイメージストリームの帯域幅によってはコールバックが特定のフレームにおいてコールされなくなることもあります。ただこれは画像データが失われるということではありません。一連のデータの最後のフレームのコールバックは必ず呼び出されので、最低でも1枚のフレームはコピーされます。
ロックされたバッファは決して上書きされることはありません。
インフォメーション
このメソッドは IC Imaging Control 3.0より非推奨となりました。
非推奨となっている FrameGrabberSinkクラスライブラリリファレンス>クラス>FrameGrabberSinkを使用している時のみ動作するメソッドであるため、FrameHandlerSinkクラスライブラリリファレンス>クラス>FrameHandlerSinkを使用する場合は FrameHandlerSink::snapImagesクラスライブラリリファレンス>クラス>FrameHandlerSink::>FrameHandlerSink::snapImages Method か FrameHandlerSink::snapImagesAsyncクラスライブラリリファレンス>クラス>FrameHandlerSink::>FrameHandlerSink::snapImagesAsync Methodを使うようにしてください
。