在matlab中通过 m文件调用mex文件,实现(必须先配置好mex运行环境)
Successfully tested compilers are:
- MinGW 4.9
- Microsoft Visual C++ 2013 Professional
- Microsoft Windows SDK 7.1
本机的mex 设置:
用户文件必须和 EvoIRMatlabInterface.m及libirimager.dll等全部api文件位于同一目录下。
(1)声明(创建)对象(一般声明为public 或者global类型)
IRInterface = EvoIRMatlabInterface;
(2)与相机连接
IRInterface.connect() 成功后会返回1,否则返回0
(3)设置伪彩色调色板
IRInterface.set_palette_colormap(PaletteValue);
输入参数为1~11的整数,其palette名称及数值的对应关系如下:
数值 |
名称 |
数值 |
名称 |
|
1 |
AlarmBlue |
7 |
IronHi |
|
2 |
AlarmBlueHi |
8 |
Medical |
|
3 |
GrayWB(white hot) |
9 |
Rainbow |
|
4 |
GrayBW(black hot) |
10 |
RainbowHi |
|
5 |
AlarmGreen |
11 |
AlramRed |
|
6 |
Iron |
* 这些参数均可以在SDK里的头文件—— EvoIRFrameMetadata.h 中找到。
(4) 设置显示的温度区间
IRInterface.set_temperature_range(min, max);
min为显示最小温度值;
max为显示的最大温度值。
* 手工设置改制,scale配置为手动,则图像具有带通滤波的效果;
(5) 设置自动调整
IRInterface.set_palette_scale(PSID);
'Manual', ... 1
'MinMax', ... 2
'Sigma1', ...3
'Sigma2' ...4
(6) 相机快门(?)
IRInterface.trigger_shutter_flag();
(7)结束连接
app.IRInterface.terminate();
附: EvoIRFrameMetadata.h 部分内容
// filename: EvoIRFrameMetadata.h
/**
* @brief sets palette format to daemon.
* Defined in IRImager Direct-SDK, see
* enum EnumOptrisColoringPalette{eAlarmBlue = 1,
* eAlarmBlueHi = 2,
* eGrayBW = 3,
* eGrayWB = 4,
* eAlarmGreen = 5,
* eIron = 6,
* eIronHi = 7,
* eMedical = 8,
* eRainbow = 9,
* eRainbowHi = 10,
* eAlarmRed = 11 };
*
* @param id palette id
* @return error code: 0 on success, -1 on error, -2 on fatal error (only TCP connection)
*/
__IRDIRECTSDK_API__ int evo_irimager_set_palette(int id);
/**
* @brief sets palette scaling method
* Defined in IRImager Direct-SDK, see
* enum EnumOptrisPaletteScalingMethod{eManual = 1,
* eMinMax = 2,
* eSigma1 = 3,
* eSigma3 = 4 };
* @param scale scaling method id
* @return error code: 0 on success, -1 on error, -2 on fatal error (only TCP connection)
*/
用App designer 或者GUIDE 开发个界面,通过上述函数,即可与Optris Pi 系列相机连接
运行效果: