Imatest IT 採購庫

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 文件):

  1. 宣告變數並處理/驗證輸入參數。
  2. 呼叫mclInitializeApplication()函數,並檢查是否成功。此函數設定全域 MCR 狀態並啟用 MCR 實例的建立。
  3. 對每個函式庫呼叫一次 Initialize,以建立函式庫所需的 MCR 實例。
  4. 呼叫庫中的函數,並處理結果。 (這是程式的主體部分。)
  5. 對每個函式庫呼叫一次 Terminate,以銷毀關聯的 MCR。
  6. 呼叫mclTerminateApplication()來釋放與全域 MCR 狀態關聯的資源。
  7. 清理變數、關閉檔案等,然後退出。

有關處理基於 MATLAB 的 C/C++ 庫的更多信息,請參閱此處的“庫”子部分。另請參閱mwArray 。

對於imatest函式庫,這些函數具有以下呼叫形式:
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結構體的兩個欄位值得關注:

  • vid_format - 傳回的im_orig所使用的影像擷取格式
  • device_name - 從傳回的im_orig取得的裝置名稱

mwArray &devices [輸出]

mwArray 是一個結構體單元數組,例如,一個 mxClassID = mxCELL_CLASS 的 mwArray 包含多個 mxClassID = mxSTRUCT_CLASS 的 mwArray。 Matlab 結構體具有以下欄位:

  • DefaultFormat - 包含預設影像擷取格式的字串
  • DeviceName :包含裝置名稱的字串。
  • DeviceID :一個包含裝置 ID 的 uint16 類型值。該值應作為 source_id 傳遞給acquire_image()函數。
  • SupportedFormats :一個 Matlab 字串單元數組,其中包含裝置支援的影像擷取格式清單。
  • 適配器:包含用於尋址設備的適配器名稱的字串(例如“gige”、“winvideo”等)。

例子

正在載入圖片文件

在這個範例中,我們載入一個圖片檔案(“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 的設備取得數據

請查看為採集庫提供的範例項目。

筆記