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 的设备获取数据

请查看为采集库提供的示例项目。

笔记