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 文件中。