【发布时间】:2014-10-31 13:16:53
【问题描述】:
我一直在为这个问题寻找一个好的可靠的解决方案,请帮助我 问题是我正在使用 Android(C++ ndk)中的 OpenCV 创建图像过滤应用程序,并且当我在将位图转换为整数数组并将其传递给本机 C++ 函数后,每次调用 OpenCV 本机 C++ 函数时不断在位图上应用过滤器. 过滤器工作正常,我得到结果,但是当我根据设备连续应用它们时,当我再次将过滤器(整数数组)的结果转换为位图时,应用程序会给出 OutOfMemory 异常。 在我测试过的不同设备上,成功应用过滤器的次数是不同的。 我得到异常的代码行是
bmOutImg = Bitmap.createBitmap(bmInImg.getWidth(), bmInImg.getHeight(),Config.ARGB_8888);
我不想将图像大小调整为更小的分辨率,谁能告诉我解决此问题的确切代码解决方案。我会很感激的!
【问题讨论】:
-
我的直觉告诉我整数数组的系统内存不足。也许在您测试过的“其他系统”上有更多可用的 RAM 或磁盘空间?
-
是的,我在具有更高 RAM 的设备上进行了测试,但它仍然崩溃,但如果图像的分辨率更小,那么我可以连续应用的次数也会增加,然后应用程序在连续应用 100 次过滤器后崩溃,但我没有'不想将位图缩小到较低的分辨率。
标签: android c++ opencv bitmap android-ndk