Я использую opencv в Android Studio, чтобы увеличить долю красного цвета в изображении. Но когда я запускаю функцию примерно через 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();
}
new
должен иметь соответствующий вызовdelete
. Обратите внимание, чтоrelease
- это другое дело и освобождает только некоторые внутренние поля Mat. - person Dmitrii Z.   schedule 05.02.2018