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。基本上不怎么出现内存不足的情况了。但是又出现两个问题,一是匹配速度比较慢,二是偶尔出现无法读取和访问内存的错误。
希望能找到更好的解决办法。