1、下图用作NCC模板图像,图像大小2248*2048,红色区域创建模板;
2、下面是halcon代码,设置模板创建和查找参数,在halcon这里创建模板和查找模板都OK。只是图像是500万像素,根据模板区域大小和查找角度范围等设置,我这里创建模板耗时10多秒。
3、转换到C#代码后,创建模板OK,我在halcon读取C#保存下来的模板,原图查找模板也OK。 但是在C#查找模板就会卡死,打断点发现就是执行到.FindNccModel这里一直卡住,有时捕获异常报内存不足,猜测是执行到这里耗内存耗时间太长。补充一个现象:模板保存下来后,C#读取模板匹配原图却不会卡死,很快找到模板,耗时和halconDemo软件差不多。所以考虑在创建模板后,调用GC.colllect(),再去查找模板,结果测试也不行;
4、既然是内存问题,那我换一种方式处理:zoom_image_factor (ImageReduced, ImageZoomed, 0.6, 0.6, ‘constant’) ,先将图像的分辨率变小,创建模板和查找模板都用分辨率变小后的图,将问题解决。不是所有项目都可以这样,我这里只需要判断物料的方向和角度,不做精准的定位,所以降低原图分辨率无碍;
5、总结: NCC模板创建很耗时,注意图像大小和模板参数设置,最好用64位系统(内存缓存处理空间比32 更大);