I am working on OpenCV in Android Studio. I convert RGB to HSV and find that app crash after running 30 seconds. I found that it is because of memory leak and someone say after adding .release()
and System.gc();
will be ok. However, I still get memory leak after adding these two lines.
My code
public class MainActivity extends CameraActivity {
CameraBridgeViewBase cameraBridgeViewBase;
Mat bwIMG;
cameraBridgeViewBase = findViewById(R.id.cameraViewer);
cameraBridgeViewBase.setCvCameraViewListener(new CameraBridgeViewBase.CvCameraViewListener2() {
@Override
public void onCameraViewStarted(int width, int height) {
}
@Override
public void onCameraViewStopped() {
}
@Override
public Mat onCameraFrame(CameraBridgeViewBase.CvCameraViewFrame inputFrame) {
Mat image = inputFrame.rgba();
bwIMG = new Mat();
bwIMG.release();
System.gc();
Imgproc.cvtColor(image, bwIMG, COLOR_RGB2HSV);
image.release();
return bwIMG;
}
});
}
}
It is fine when I comment the cvtColor
line. How can I release the memory? Thanks.