开发环境:windows7-64位,VisualStudio2013-C#,halcon12-64位

用C#调用同事用Halcon12写的图片处理程序时,内存一直增加,无法释放。halcon每次处理4张图片,每张图片10M,每次调用之后,内存就增加40M无法释放。在C#中将能释放的图像资源全部释放后,问题仍然得不到解决。

最终查出为halcon12不会自动释放不再使用的内存,需要手动释放。

gen_measure_rectangle2 (param[0]+Index*20, param[1], 0, 300, 20, Width, Height, 'nearest_neighbor', MeasureHandle)

gen_rectangle2 (Rectangle1, param[0]+Index*20, param[1], 0, 200, 20)

measure_pos (image, MeasureHandle, 1, param[2], param[3], param[4], RowEdge, ColumnEdge, Amplitude, Distance)

if(|RowEdge|>0)

    row:=[row,RowEdge]

    col:=[col,ColumnEdge] 

    gen_cross_contour_xld (Cross, RowEdge, ColumnEdge, 36, 0.785398)

    concat_obj (okregion, Cross, okregion)

endif

close_measure (MeasureHandle)

以上代码为halcon12中的代码,注意划横线的两行,及红色变量。最后调用close_measure方法释放内存。即算子调用结束,一定要配合close_measure方法释放内存,否则容易出现内存泄漏问题。

其他例如:read_ocr_class_mlp 一定要配合clear_ocr_class_mlp

read_ocr_class_mlp ('Document.omc', OCRHandle)
do_ocr_multi_class_mlp (Characters, ImageReduced, OCRHandle, X, Confidence)
clear_ocr_class_mlp(OCRHandle)


以上内存泄漏问题,在halcon16中没有发生,即没有手动释放,也没有发生内存泄漏

2018-11-29

 

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐