Android中的OpenCV错误:内存不足(无法分配)

时间:2018-02-05 15:05:20

标签: android opencv memory-management out-of-memory

我在Android Studio中使用opencv来增加图像中的红色比例。但是当我在大约30次后运行该函数时,程序崩溃并显示错误。

OpenCV Error: Insufficient memory(Failed to allocate *****bytes)

我搜索了许多相关问题,很多人说添加 Mat.release()可以解决这个问题。我在我的函数中添加了Mat.release但它没有帮助。我跑了30多次后程序仍然崩溃。

这是我的代码。有人知道如何解决这个问题吗?

public void addRedColor(int red){

Mat img = new Mat();
Utils.bitmapToMat(src, img);

List<Mat> bitplane = new ArrayList<>(img.channels());
Core.split(img, bitplanes);
Mat redChannel = new Mat();
Core.add(bitplane.get(0), new Scalar(red), redChannel);
bitplane.set(0, redChannel);
Core.merge(bitplane, img);

// release the Mat
img.release();
bitplane.get(0).release();
bitplane.get(1).release();
bitplane.get(2).release();
redChannel.release();

}

1 个答案:

答案 0 :(得分:0)

避免使用新的Mat浪费内存,并在方法结束之前强制垃圾回收器

    System.gc();
    System.runFinalization();