关于mwwz视觉库内存泄漏、卡死闪退问题的说明
关于内存泄漏
1. mwwz视觉库不存在内存泄漏
基于以下两点事实:
-
算法经过专业内存泄漏检测工具验证,若存在内存泄漏,工具会明确输出泄漏的字节数与地址。
-
算法经过最多100万次或连续24小时不间断运行测试,期间使用
Process Explorer对内存和CPU进行实时监控,内存占用与匹配耗时均保持稳定,几乎无波动。

2. 内存泄漏的常见诱因
使用过程中若出现内存增长,通常是由于未正确释放资源,常见于以下两种情况:
-
创建模板后未调用
clear_shape_model进行清除。 -
获取匹配结果或模板特征点后,未调用
clear_mems释放对应的内存。
总结:所有创建的模板都需要清除;凡是返回mem_id的接口,均需配对调用clear_mems释放内存。
关于程序卡死与闪退
1. 卡死
卡死问题多出现在早期版本的TemplateMatch.exe和TemplateMatchQt.exe两个示例程序中。
主要原因是界面程序与控制台窗口混合使用,当控制台窗口获取焦点后再切回界面时,消息循环被阻塞,导致界面无响应。
该问题属于UI交互层面的问题,并非算法本身引起。
2. 闪退
闪退通常由于内存分配失败或访问越界导致,多发生于处理大尺寸图像的场景。
其中TemplateMatch.exe为32位程序,受限于用户态虚拟地址空间(约2GB),叠加OpenCV的Mat对象本身也有内存限制,极易触发内存分配失败。
建议:处理大图时,请优先使用64位程序TemplateMatchQt.exe,可有效规避寻址空间不足的问题。
上述卡死与闪退问题,我在早期版本中已修复,后续所有发布版本均默认包含。若仍有问题,欢迎反馈。请放心——该问题源于UI与控制台的交互机制,算法本身并无缺陷。