Imatest IT 影像擷取庫使開發人員能夠直接從受支援的裝置擷取影像,並以動態連結庫 (DLL) 的形式提供,與Imatest IT相同。擷取庫傳回的影像隨後可以傳遞給Imatest IT庫,由 Imatest 強大的影像品質分析例程進行分析。 Imatest IT 影像擷取庫支援與Imatest Master相同的裝置和介面:
*注意* 從 Imatest 5.0 開始,影像擷取功能已整合到 Imatest Master 中。先前,這些功能位於已停止開發的 Imatest IS 中。
| 伊皮凡 | STM導管 | |
| 全視 | Graphin EasyLab | |
| 東芝 | 安森美半導體 Devware |
函數原型和定義
Acquisition 函式庫的使用方式與Imatest IT類似:程式透過在 C/C++ 程式中呼叫來啟動。步驟如下(摘自 Matlab 文件):
- 宣告變數並處理/驗證輸入參數。
- 呼叫mclInitializeApplication()函數,並檢查是否成功。此函數設定全域 MCR 狀態並啟用 MCR 實例的建立。
- 對每個函式庫呼叫一次 Initialize,以建立函式庫所需的 MCR 實例。
- 呼叫庫中的函數,並處理結果。 (這是程式的主體部分。)
- 對每個函式庫呼叫一次 Terminate,以銷毀關聯的 MCR。
- 呼叫mclTerminateApplication()來釋放與全域 MCR 狀態關聯的資源。
- 清理變數、關閉檔案等,然後退出。
有關處理基於 MATLAB 的 C/C++ 庫的更多信息,請參閱此處的“庫”子部分。另請參閱mwArray 。
| imatest_libraryInitialize(void) | 初始化庫。 |
| imatest_libraryTerminate(void) | 關閉圖書館。 |
| imatestPrintStackTrace(void) | 解析庫中的堆疊追蹤。 |
| mlxAcquire_image( int nlhs , mxArray *plhs[] , int nrhs , mxArray *prhs[]) | C 語言呼叫 acquire_image 函數。請參閱下面的參數規格。另請參閱“調用 (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、東芝、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、東芝、STM、Graphin 和 ON Semi 以外的設備取得資料時才需要這樣做。
參數規格表
程式名稱和參數應包含完整路徑名,以最大程度地減少出錯的可能性。
const mwArray &source_id [輸入] | 所需設備的 ID 號碼(mxDouble 類型): 0-> 載入受支援的圖片文件 1-> 頓悟 2-> 全視 3-> 東芝 4-> STM導管 5-> Graphin EasyLab 6->安森美半導體開發軟體 7->安卓 或使用list_devices () 呼叫傳回的DeviceID ,該函數傳回的值將大於 7。 |
const mwArray &varargin [輸入] | mwArray 是一個包含 1 到 4 個參數的陣列,其中 mxClassID = mxCELL_CLASS。僅 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結構體的兩個欄位值得關注:
|
mwArray &devices [輸出] | mwArray 是一個結構體單元數組,例如,一個 mxClassID = mxCELL_CLASS 的 mwArray 包含多個 mxClassID = mxSTRUCT_CLASS 的 mwArray。 Matlab 結構體具有以下欄位:
|
例子
正在載入圖片文件
在這個範例中,我們載入一個圖片檔案(“C:\Sample_dir\example.jpg”),並將圖片資料作為行優先、交錯的圖片傳回。
// 輸出參數
mwArray im_orig, vstr;
// source_id
mwArray source_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());
// 設定可變參數單元格數組
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);
}
捕獲 (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 裝置管理員保存的設置,則需要將相應的裝置設定 JSON 檔案包含在 Imatest INI 檔案中。