2016-04-15 81 views
0

我正在尝试OpenCV。在我的演示中,我想将相机预览帧显示为纯黑色和白色。我演示编译并运行良好几秒钟后运行(我可以看到黑色和白色的预览框),但崩溃:在初始化过程中,opencv内存不足错误

OpenCV Error: Insufficient memory (Failed to allocate 11059200 bytes) 
... 
cv::Mat::create(int, const int*, int)] 
at org.opencv.core.Mat.n_Mat(Native Method) 
at org.opencv.core.Mat.<init>(Mat.java:50) 

我的代码:

public Mat onCameraFrame(CameraBridgeViewBase.CvCameraViewFrame inputFrame) { 
    Mat src = inputFrame.rgba(); 

    // insufficient memory error here? 
    Mat dest = new Mat(src.size(), src.type()); 

    Imgproc.threshold(src, dest, 30, 255, Imgproc.THRESH_BINARY); 
    return dest; 
} 

出了什么问题?

回答

0

我已通过添加此行解决了此问题。

Mat.release() 

在培训地点的每一个OpenCV Matrix对象,其中,不再需要每个对象

+0

奇怪的是,在android的OpenCV的Hello World应用程序没有做释放,但它没有有内存不足错误。它只是在添加导致错误的阈值操作之后。无论如何,release()确实可以解决我的问题。 – happymeal