Contents ...
udn網路城邦
OpenCV for Android 基本框架
2015/09/18 15:26
瀏覽2,131
迴響0
推薦0
引用0

在Android 使用OpenCV function,可以import openCBLib300.lib for Java。藉由Java interface使用opencv function來完成想要做的事情如load image, camera preview及影像處理。

在能正確使用之前,有一些基本的框架需要完成

1. 加入BaseLoaderCallback

Android studio會出現選單,選第一個,系統會自動import 所需的module

import org.opencv.android.BaseLoaderCallback;

宣告 private BaseloaderCallback mLoaderCallback

產生以下的code segment

public class OpenCVLibActivity extends Activity {

private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback() {
@Override
public void onManagerConnected(int status) {
super.onManagerConnected(status);
}
}

要在}之後加上;,不然會有以下error

BaseLoaderCallback()要加入 this,不然會有以下error

修改public void onManagerConnected(int status)內容如下

private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback() {
@Override
public void onManagerConnected(int status) {
switch (status) {
case LoaderCallbackInterface.SUCCESS:
break;
default:
super.onManagerConnected(status);
break;
}
}
};

還有onResume()

public void onResume() {
super.onResume();
if (!OpenCVLoader.initDebug()) {
//Internal OpenCV library not found. Using OpenCV Manager for initialization
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_0_0, this, mLoaderCallback);
} else {
//OpenCV library found inside package. Using it!
mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS);
}
}

完整的片段

BaseLoaderCallback(){…};要跟onResume()一起搭配。

private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
@Override
public void onManagerConnected(int status) {
switch (status) {
case LoaderCallbackInterface.SUCCESS:
break;
default:
super.onManagerConnected(status);
break;
}
}
};
@Override
public void onResume() {
super.onResume();
if (!OpenCVLoader.initDebug()) {
//Internal OpenCV library not found. Using OpenCV Manager for initialization
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_0_0, this, mLoaderCallback);
} else {
//OpenCV library found inside package. Using it!
mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS);
}
}

補充:    

使用的實驗機台:  ASUS ZE500KL 8916 64bit CPU and 64bit OS.

配合使用的機台,目前的範例都是需要安裝OpenCV_3.0.0_Manager_3.00_arm64-v8a.apk.

其中arm64-v8a  代表64-bit arm  CPU API