No implementation found for long org.opencv.core.Mat.n_Mat() error Using OpenCV
Solution 1:
I have successfully eliminate the error and my app does not crash while executing this line imageMat=new Mat();
The reason for the error is that Android calls the "onCreate" method before loading the OpenCV4Android library.So i have used Async Initialization of OpenCV using OpenCVManager. I have created BaseLoaderCallback before onCreate method. And inside that i have declared new Mat() like this:
private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
@Override
public void onManagerConnected(int status) {
switch (status) {
case LoaderCallbackInterface.SUCCESS:
{
Log.i("OpenCV", "OpenCV loaded successfully");
imageMat=new Mat();
} break;
default:
{
super.onManagerConnected(status);
} break;
}
}
};
Then in onResume() i have checked if OpenCV library have been loaded and initialized from within current application package or not. The codes are as follows:
public void onResume()
{
super.onResume();
if (!OpenCVLoader.initDebug()) {
Log.d("OpenCV", "Internal OpenCV library not found. Using OpenCV Manager for initialization");
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_0_0, this, mLoaderCallback);
} else {
Log.d("OpenCV", "OpenCV library found inside package. Using it!");
mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS);
}
}
And my error is gone. My full updated java class is here.
Reference links :
- Async Initialization of OpenCV on Android using OpenCVManager
- Tutorial1Activity.java
Solution 2:
Initialize openCV library in your activity add this code before onCreate() method
static {
if (!OpenCVLoader.initDebug()) {
// Handle initialization error
}
}
add this lib in your project : https://github.com/hschott/Camdroid