android– 用opencv 2.0明确释放Mat

android– 用opencv 2.0明确释放Mat,第1张

概述我正在开发一个程序,我们使用AndroidNDK对全质量相机照片进行一些图像处理.因此,显然内存使用是一个很大的问题.有些时候我不再需要Mat的内容–我知道它会在超出范围时自动释放,但有一种很好的方法可以提前释放它,所以我可以减少内存使用量?它现在在我的GalaxySII上正常运行,

我正在开发一个程序,我们使用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所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1109735.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存