您的位置:首页 > 移动开发 > Android开发

Android Studio开发环境集成OpenCV for Android详情

2017-12-05 13:39 363 查看

一、下载 OpenCV for Android

可以从OpenCV官网下载 —— [ OpenCV for Android]

下载后将其解压至电脑任意文件下,本文为



二、Android Studio 新建项目



三、Android Studio 导入modul



选择module路径,根据实际解压路径


然后一直next直到finish



添加module依赖





三、Android Studio 集成OpenCV

首先把OpenCV的build.gradle中compileSdkVersion,buildToolsVersion,minSdkVersion,targetSdkVersion版本号改何项目build.gradle版本一致。

然后把解压文件中如下图libs改名为jniLibs复制到项目main里


在Androidmanifest.xml中添加

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:screenOrientation="landscape"
android:configChanges="keyboardHidden|orientation">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-permission android:name="android.permission.CAMERA"/>
<uses-feature android:name="android.hardware.camera" android:required="false"/>
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/>
<uses-feature android:name="android.hardware.camera.front" android:required="false"/>
<uses-feature android:name="android.hardware.camera.front.autofocus" android:required="false"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>


activity_main.xml代码如下

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:opencv="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="cuit.opencvandgl.MainActivity">

<org.opencv.android.JavaCameraView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/camera_view"
opencv:show_fps="true"
opencv:camera_id="any"/>

</RelativeLayout>


MainActivity代码如下

public class MainActivity extends Activity {
private static String TAG = "MainActivity";
private CameraBridgeViewBase mCVCamera;

BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
@Override
public void onManagerConnected(int status) {
switch (status) {
case LoaderCallbackInterface.SUCCESS:
android.util.Log.i("TAG", "OpenCV loaded successfully");
mCVCamera.enableView();
break;
default:
break;
}
super.onManagerConnected(status);
}
};

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mCVCamera = (CameraBridgeViewBase) findViewById(R.id.camera_view);
mCVCamera.setCvCameraViewListener(new CameraBridgeViewBase.CvCameraViewListener2() {
@Override
public void onCameraViewStarted(int width, int height) {

}

@Override
public void onCameraViewStopped() {

}

@Override
public Mat onCameraFrame(CameraBridgeViewBase.CvCameraViewFrame inputFrame) {
android.util.Log.e("TAG", "OpenCV 调用了");
return inputFrame.rgba();
}
});
}

@Override
public void onResume() {
super.onResume();
if (!OpenCVLoader.initDebug()) {
Log.d(TAG, "OpenCV library not found!");
} else {
Log.d(TAG, "OpenCV library found inside package. Using it!");
mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS);
}
}

@Override
public void onDestroy() {
if(mCVCamera!=null){
mCVCamera.disableView();
}
super.onDestroy();
}
}


最后运行即可,主要调试时,打开相机权限
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  opencv