halcon 双线程 先find shape model 然后find ncc model 显示not enough memory avaliable in operator find ncc

1.首先尝试  内存回收  ,GC.colloct()。没有效果。

2.将相机保存的图片转换成灰度图再find,有减少出现次数,但还是会出现。

3.将himage.find_shape_model  全部改成  HOperatorSet.find_shape_model(hobject,.......),感觉又减少了一些,但是还会出现。

4.HSystem.SetSystem("temporary_mem_cache", "false");不使用缓存,减少缓存使用,减少了很多,但是偶尔还会出现。

5.有网友说使用64位编译,但程序使用了伺服驱动dll是32位的,无法更换。无法验证效果。

6.使用前后clear_shape_model,clear_ncc_model。我之前因为需要不断的重复使用多个模型,每次使用一个,所以将模型(model)先读到一个变量里,用到时直接拿过来用,用完也没有dispose或clear。现在改成每次使用时,从文件读取model,再find。基本上不怎么出现内存不足的情况了。但是又出现两个问题,一是匹配速度比较慢,二是偶尔出现尝试读取或写入内存错误。

7.angleStep设大一点,角度范围设小一点,可以加快搜索速度,减少内存

希望能找到更好的解决办法。


版权声明:本文为zhangsansecond原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。