我正在开发一个程序,我们使用Android NDK对全质量相机照片进行一些图像处理.因此,显然内存使用是一个很大的问题.
有些时候我不再需要Mat的内容 – 我知道它会在超出范围时自动释放,但有一种很好的方法可以提前释放它,所以我可以减少内存使用量?
它现在在我的galaxy S II上正常运行,但显然这并不能代表很多旧款手机的功能!
解决方法:
如果您只有一个矩阵指向您的数据,您可以这样做:
Mat img = imread("myImage.jpg");// do some operationsimg = Mat(); // release it
如果多个Mat指向您的数据,您应该做的是释放所有数据
Mat img = imread("myImage.jpg");Mat img2 = img;Mat roi = img(Rect(0,0,10,10));// do some operationsimg = Mat(); // release all of themimg2 = Mat();roi = Mat();
或者使用推土机方法:(你确定吗?这听起来像是在代码中插入错误)
Mat img = imread("myImage.jpg");Mat img2 = img;Mat roi = img(Rect(0,0,10,10));// do some operationschar* imgData = (char*)img.data;free[] imgData;imshow("Look, this is called access violation exception", roi);
总结 以上是内存溢出为你收集整理的android – 用opencv 2.0明确释放Mat全部内容,希望文章能够帮你解决android – 用opencv 2.0明确释放Mat所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)