NI-IMAQのメモリ割り当て
使用ソフトウェア: Driver Software>>NI-IMAQ
使用ソフトウェア・バージョン: N/A
使用ソフトウェア・バージョンに特化: N/A
二次のソフトウェア: N/A
問題: 画像集録のためのメモリ割り当てはどのように行われているのでしょうか
解決策: IMAQ Create関数は長さが0の初期化されていないIMAQバッファへのポインタを生成します。
実際のメモリ割り当てはIMAQ Configure Buffer関数によって行われますが、この関数はIMAQ Init関数によりデバイスが構成された後、かつ画像集録よりも前に呼び出される必要があります。
IMAQ Configure Buffer関数はデバイスの構成やカメラフォーマットに基づいてIMAQバッファのサイズを変更します。
もし上位レベルのIMAQ関数(IMAQ Snap、IMAQ Grab Setup、IMAQ Sequence)を使用している場合、IMAQ Configure Buffer関数はその内部で呼び出されています。
LabVIEWのimageレファレンスにはLabVIEW内部へのポインタが含まれており、バッファ自体を受け渡しているわけではありません。
IMAQ GetImagePixelPtr関数を使用することによってポインタから画像メモリの場所にアクセスし、バッファ自体のデータを知ることができます。
画像はメモリ内に左上から右下に向かって格納されています。例えば、0行0列には画像の左上のピクセルのデータが格納されています。
GetImagePixelPointerのオンラインヘルプには画像データがどのようにメモリに格納されているかより詳細な記述があります。このVIを使用することによって例えばdllに対して画像を渡す必要がある場合など画像データに適切にアクセスするために必要な情報を取得することができます。
関連リンク: IMAQ Create.VIのImage Nameが同じである場合の使用メモリについて
画像に色づけや文字、ラインなどを書き込むための関数であるOverlayを使用していると、メモリリークが起こるように見えるのですが
添付:
報告日時: 10/15/1999
最終更新日: 03/16/2005
ドキュメントID: 1QE846YJ
Other Support Options
Ask the NI Community
Collaborate with other users in our discussion forums
Request Support from an Engineer
A valid service agreement may be required, and support options vary by country.