Imatest IT 取得ライブラリを使用すると、開発者はサポートされているデバイスから直接イメージを取得できます。このライブラリは、 Imatest ITと同様に、ダイナミックリンクライブラリ (DLL) の形式で提供されます。取得ライブラリから返されたイメージは、Imatest の電力イメージ品質分析ルーチンによる分析のために、 Imatest ITライブラリに渡すことができます。Imatest IT 取得ライブラリは、Imatest Masterと同じデバイスとインターフェイスをサポートしています。
*注* Imatest 5.0以降、画像取得機能はImatest Masterに搭載されました。以前はこれらの機能はImatest ISに搭載されていましたが、Imatest ISは既に販売終了となっています。
関数、プロトタイプ、および定義
Acquisitionライブラリの使用方法はImatest ITと同様です。プログラムはC/C++プログラム内で呼び出すことで起動します。手順は以下のとおりです(Matlabのドキュメントから抜粋)。
- 変数を宣言し、入力引数を処理/検証します。
- mclInitializeApplication()関数を呼び出し、正常に完了したかどうかをテストしてください。この関数は、グローバルな MCR の状態を設定し、MCR インスタンスの構築を可能にします。
- 各ライブラリごとに一度、Initialize を呼び出して、ライブラリが必要とする MCR インスタンスを作成します。
- ライブラリ内の関数を呼び出し、結果を処理します。(これがプログラムの本体部分です。)
- ライブラリごとに一度ずつ、Terminate を呼び出して、関連付けられた MCR を破棄します。
- グローバル MCR 状態に関連付けられたリソースを解放するには、 mclTerminateApplication()を呼び出します。
- 変数をクリーンアップし、ファイルを閉じるなどして、終了します。
MATLAB ベースの C/C++ ライブラリの取り扱いに関する詳細は、 こちらの「ライブラリ」セクションをご覧ください。mwArray も参照してください。
| imatest_libraryInitialize(void) | ライブラリを初期化します。 |
| imatest_libraryTerminate(void) | 図書館を閉鎖するため。 |
| imatestPrintStackTrace(void) | ライブラリ内のスタックトレースを解決する。 |
| mlxAcquire_image ( int nlhs 、 mxArray *plhs[] 、 int nrhs 、 mxArray *prhs[]) | acquire_image 関数への C 呼び出し。パラメータ仕様については下記を参照してください。C共有ライブラリの呼び出しについては「C 言語による共有ライブラリの呼び出し」を参照してください。 |
| acquire_image( int nargout, mwArray &im_orig, mwArray &vstr, const mwArray &source_id, const mwArray &varargin); | 対応デバイスから直接取得する。 |
| list_devices( int nargout, mwArray &devices); | 標準インターフェース(Epiphan、Omnivision、Toshiba、STM、Graphin、ON Semi)以外の接続デバイスを一覧表示する。 |
mwArray型およびmxArray型のパラメータは、Matlab 配列型です。パラメータnargoutおよびnlhs は出力パラメータの数を指定します。acquire_image ()とlist_devices()の両方で、この数は 1 に設定する必要があります。パラメータ*plhs[] 、 &im_orig 、 &vstr 、および&devices は、それぞれacquire_image()およびlist_devices()から返されるデータのプレースホルダーです。list_devices ()関数呼び出し これは、開発者がEpiphan、Omnivision、Toshiba、STM、Graphin、およびON Semi以外のデバイスからデータを取得したい場合にのみ必要です。
パラメータ仕様表
エラーの可能性を最小限に抑えるため、プログラム名とパラメータには完全なパス名を含めるようにしてください。
const mwArray &source_id [入力] | 対象デバイスのID番号(mxDouble形式): 0-> サポートされている画像ファイルを読み込む 1-> エピファン 2→オムニビジョン 3→東芝 4-> STMコンジット 5-> Graphin EasyLab 6-> セミデヴウェア 7-> Android または、 list_devices () 呼び出しから返されるDeviceID (7より大きい値を返す) |
const mwArray &varargin [入力] | mxClassID = mxCELL_CLASS という1~4個のパラメータを持つmwArray。2番目のパラメータが必要なのはOmnivisionとEpiphanの場合のみです。 varargin {1}: 画像が行優先で、解析のためにRGB平面、列優先に変換する必要がある場合は1.0に設定します。それ以外の場合は0に設定します。 varargin {2}: source_id == 2 (Omnivision) またはsource_id == 0 (File) の場合、これは完全修飾 Imatest *.ini ファイル名でなければなりません。 source_id == 1 (Epiphan) の場合、このパラメータは、Epiphan Capture ツール内のデバイスの順序に対応する Epiphan チャネル (0.0 または 1.0) を選択するために使用されます。 varargin {3}: source_id > 7の場合、 list_devices () によって返されるデバイス名。 source_id == 0の場合、完全修飾イメージファイル名。 varargin {4}: list_devices () によって返される、目的の画像取得フォーマット。source_id > 7のソースから取得する場合にのみ必要です。 |
mwArray &im_orig [出力] | 返された画像を格納するためのmwArray。acquire_image()が正常に完了すると、このmwArrayに画像が格納されます。この画像はImatest ITに渡すことができます。 |
mwArray &vstr [出力] | 返されたvstr Matlab構造体を格納するmwArray。source_idが1~7以外のデバイスからデータを取得する場合、 vstr構造体の2つのフィールドが重要になります。
|
mwArray &devices [出力] | 構造体のセル配列であるmwArray、つまりmxClassID = mxCELL_CLASSのmwArrayの中にmxClassID = mxSTRUCT_CLASSのmwArrayが含まれる配列です。Matlab構造体には以下のフィールドがあります。
|
例
画像ファイルを読み込んでいます
この例では、画像ファイル("C:\Sample_dir\example.jpg") を読み込み、行優先のインターリーブ画像として画像データを返します。
// 出力パラメータ
mwArray im_orig、vstr;
// ソースID
mwArray ソース ID((mxDouble(0));
// toRGBRows
mwArray toRGBrows = mwArray(1,1,mxDOUBLE_CLASS);
toRGBrows=1.0;// 1を指定することで、画像を行優先形式で表示します
// Imatest INI ファイル
std::string m_ini_file = "C:\Sample_dir\imatest-v2.ini";
mwArray ini_file(m_ini_file.c_str());
// 画像ファイル
std::string m_image_file = "C:\Sample_dir\example.jpg";
mwArray image_file(m_image_file.c_str());
// varargin セル配列を設定します
mwArray vararginParam = mwArray(1,3,mxCELL_CLASS);
vararginParam.Get(1,1).Set(toRGBrows);
vararginParam.Get(1,2).Set(ini_file); // INI ファイルへのパス
vararginParam.Get(1,3).Set(image_file);
試す
{
acquire_image(2, im_orig, vstr, source_id, vararginParam);
}
catch (mwException& e)
{
std::cout << "実行エラー!" << std::endl;
std::cerr << e.what() << std::endl;
e.print_stack_trace();
}
source_idが1~7のデバイスから取得
acquire_image()の使用例については、オープンソースのOperatorConsoleに含まれるImatestLibAcq.cppファイル内の ImatestLibAcq::CaptureFrame() メンバー関数を参照してください。
source_id > 7 のデバイスから取得しています
取得ライブラリ用に提供されているサンプルプロジェクトをご覧ください。
注記
- acquire_image() を呼び出す前に、各デバイスはそれぞれの制御ソフトウェアによって適切に初期化されている必要があります。
- Imatest 4.4 および 4.5の場合:デバイスが Imatest IS Device Manager によって保存された設定を必要とする場合、対応するデバイス設定 JSON ファイルをImatest INI ファイルに含める必要があります。