android opencv blib,Android Studio导入OpenCV Android SDK
一、到OpenCV官网下载SDK。http://opencv.org/downloads.html 选择Android平台的SDK,下载完成后解压。二、新建AndroidStudio的项目这里项目名为TestOpenCV。 然后在File-New-ImportModule选择刚刚解压文件里的java文件夹。 三、修改OpenCVLibrary310里的build.gradle这里和app的buil
一、到OpenCV官网下载SDK。
http://opencv.org/downloads.html
选择Android平台的SDK,下载完成后解压。
二、新建AndroidStudio的项目
这里项目名为TestOpenCV。
然后在File-New-ImportModule选择刚刚解压文件里的java文件夹。
三、修改OpenCVLibrary310里的build.gradle
这里和app的build.gradle一致。
apply plugin: 'com.android.library'
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
minSdkVersion 15
targetSdkVersion 19
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
}
四、导入Module
在app文件夹右键选择OpenModuleSettings,Dependencies里添加刚刚导入的Module:openCVLibrary310
五、导入libs文件夹
将sdk解压文件夹里的libs文件夹拷到app/src/main文件夹下,并重命名为jniLibs。如果不需要在x86平台上跑可以删掉对应的lib文件。
六、测试导入是否成功。
在刚刚下载的sdk包里面有示例教程,这里将tutorial里面的相机预览项目移植进来。
首先在AndroidManifest.xml里面添加
然后布局文件里面添加
xmlns:tools="http://schemas.android.com/tools"
xmlns:opencv="http://schemas.android.com/apk/res-auto"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.opencv.MainActivity">
android:layout_height="match_parent"
android:layout_width="match_parent"
opencv:camera_id="any"
opencv:show_fps="true"
android:id="@+id/camera_view"
android:visibility="gone"/>
Activity代码如下package com.example.testopencv;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MenuItem;
import android.view.SurfaceView;
import android.view.WindowManager;
import org.opencv.android.BaseLoaderCallback;
import org.opencv.android.CameraBridgeViewBase;
import org.opencv.android.CameraBridgeViewBase.CvCameraViewListener2;
import org.opencv.android.LoaderCallbackInterface;
import org.opencv.android.OpenCVLoader;
import org.opencv.core.Mat;
public class MainActivity extends AppCompatActivity implements CvCameraViewListener2 {
private CameraBridgeViewBase mOpenCvCameraView;
private boolean mIsJavaCamera = true;
private MenuItem mItemSwitchCamera = null;
private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
@Override
public void onManagerConnected(int status) {
switch (status) {
case LoaderCallbackInterface.SUCCESS:
{
mOpenCvCameraView.enableView();
} break;
default:
{
super.onManagerConnected(status);
} break;
}
}
};
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
setContentView(R.layout.activity_main);
mOpenCvCameraView = (CameraBridgeViewBase) findViewById(R.id.camera_view);
mOpenCvCameraView.setVisibility(SurfaceView.VISIBLE);
mOpenCvCameraView.setCvCameraViewListener(this);
}
@Override
public void onPause()
{
super.onPause();
if (mOpenCvCameraView != null)
mOpenCvCameraView.disableView();
}
@Override
public void onResume()
{
super.onResume();
if (!OpenCVLoader.initDebug()) {
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_0_0, this, mLoaderCallback);
} else {
mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS);
}
}
public void onDestroy() {
super.onDestroy();
if (mOpenCvCameraView != null)
mOpenCvCameraView.disableView();
}
public void onCameraViewStarted(int width, int height) {
}
public void onCameraViewStopped() {
}
public Mat onCameraFrame(CameraBridgeViewBase.CvCameraViewFrame inputFrame) {
return inputFrame.rgba();
}
}
然后运行,就会出现相机预览的界面了。
更多推荐
所有评论(0)