又玩了一遍android studio + opencv开发,每次都配置环境很复杂,这次记录在案,以后就不用网上搜了。
搞了老半天,原来是onCreate里面不能定义Mat m = new Mat() 傻逼了!
Recommended steps for using OpenCV in Android Studio with OpenCV manager.
- Unzip OpenCV Android sdk downloaded from OpenCV.org(3)
- From
File -> Import Module
, choosesdk/java
folder in the unzipped opencv archive. - Update
build.gradle
under imported OpenCV module to update 4 fields to match your project'sbuild.gradle
a) compileSdkVersion b) buildToolsVersion c) minSdkVersion and 4) targetSdkVersion. - Add module dependency by
Application -> Module Settings
, and select theDependencies
tab. Click+
icon at bottom(or right), chooseModule Dependency
and select the imported OpenCV module.
As the final step, in your Activity class, add snippet below.
public class SampleJava extends Activity {
private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
@Override
public void onManagerConnected(int status) {
switch(status) {
case LoaderCallbackInterface.SUCCESS:
Log.i(TAG,"OpenCV Manager Connected");
//from now onwards, you can use OpenCV API
Mat m = new Mat(5, 10, CvType.CV_8UC1, new Scalar(0));
break;
case LoaderCallbackInterface.INIT_FAILED:
Log.i(TAG,"Init Failed");
break;
case LoaderCallbackInterface.INSTALL_CANCELED:
Log.i(TAG,"Install Cancelled");
break;
case LoaderCallbackInterface.INCOMPATIBLE_MANAGER_VERSION:
Log.i(TAG,"Incompatible Version");
break;
case LoaderCallbackInterface.MARKET_ERROR:
Log.i(TAG,"Market Error");
break;
default:
Log.i(TAG,"OpenCV Manager Install");
super.onManagerConnected(status);
break;
}
}
};
@Override
protected void onResume() {
super.onResume();
//initialize OpenCV manager
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_9, this, mLoaderCallback);
}
}
Note: You could only make OpenCV calls after you receive success callback on onManagerConnected
method. During run, you will be prompted for installation of OpenCV manager from play store, if it is not already installed. During development, if you don't have access to play store or is on emualtor, use appropriate OpenCV manager apk present in apk
folder under downloaded OpenCV sdk archive .
Pros
- Apk size reduction by around 40 MB ( consider upgrades too ).
- OpenCV manager installs optimized binaries for your hardware which could help speed.
- Upgrades to OpenCV manager might save your app from bugs in OpenCV.
- Different apps could share same OpenCV library.
Cons
- End user experience - might not like a install prompt from with your application.
在android平台上实现objectMatch,实时的识别,提取摄像头的程序参考
http://blog.csdn.net/nimeghbia/article/details/49421371
package com.example.wan.trycamerasurf;
import org.opencv.android.BaseLoaderCallback;
import org.opencv.android.LoaderCallbackInterface;
import org.opencv.android.OpenCVLoader;
import org.opencv.calib3d.Calib3d;
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.android.CameraBridgeViewBase;
import org.opencv.android.CameraBridgeViewBase.CvCameraViewListener