【问题标题】:Android image processing filters causes OutOfMemory ExceptionAndroid 图像处理过滤器导致 OutOfMemory 异常
【发布时间】: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


【解决方案1】:

问题很简单,我没有在本地 c++ 代码中释放数组。

【讨论】:

    猜你喜欢
    • 2011-09-03
    • 2011-10-12
    • 2016-06-14
    • 1970-01-01
    • 1970-01-01
    • 2013-08-02
    • 1970-01-01
    • 2014-08-10
    • 1970-01-01
    相关资源
    最近更新 更多