Halcon中Hobject 格式的图像可以采用两种方式释放资源。
1)C#环境
1.1,Hobject.Dispose();这种方法会释放掉图像占用的内存资源,是我们最常用的释放方式。
1.2,ho_Image1 = null,这种情况只是把图像置空,并没有释放掉图像占用的资源。不过如果这是个全局变量,后面继续用 这个图像变量,实现自动覆盖也不会造成内存持续增长,否则内存会持续增长。后面判断图像释放可以用if(ho_Image1 == null){"释放成功”}。
2)C++环境
2.1 C++编程环境下没有Hobject.Dispose();需要调用Hobject.Clear();C++调用Hobject.Clear()后,后面可以跟
if (!ho_Image1.IsInitialized()){“释放成功”},判断是否释放成功。假如释放成功,则ho_Image1.IsInitialized()会返回false,没有释放则返回true;
2.2 C++环境下,判断图像是否为空的方法如下
HObject ho_EmptyObject;
HTuple hv_IsEqual;
GenEmptyObj(&ho_EmptyObject);
TestEqualObj(ho_EmptyObject, ho_Image, &hv_IsEqual);
if ((!ho_Image.IsInitialized()) || (hv_IsEqual == 1))
{
//图像为空,或者图像被clear
return 1;
}