我在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();
}
答案 0 :(得分:0)
避免使用新的Mat浪费内存,并在方法结束之前强制垃圾回收器
System.gc();
System.runFinalization();