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

opencv在android上预览的最小代码模块(2)

2015-01-25 11:01 288 查看


简介

  本文主要是介绍,将opencv模块在Android上预览的最小代码实现。


准备工作

  首先在opencv官网上下载Android的库文件,下载下来之后,我的如下:





  接着可以使用eclipse新建一个工程,注意:opencv库和apk的工程必须在一个目录下。然后将opencv的android库和apk工程都导入到eclipse中,如下:





  接着导入opencv库,效果如下:





  至于opencv环境搭建的,网上很多教程,就不多说了。


代码内容

  实现的基本代码如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<org.opencv.android.JavaCameraView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/color_blob_detection_activity_surface_view" />

</LinearLayout>


package com.example.camera_opencv_android;

import org.opencv.android.BaseLoaderCallback;
import org.opencv.android.CameraBridgeViewBase;
import org.opencv.android.LoaderCallbackInterface;
import org.opencv.android.OpenCVLoader;
import org.opencv.android.CameraBridgeViewBase.CvCameraViewFrame;
import org.opencv.android.CameraBridgeViewBase.CvCameraViewListener2;
import org.opencv.core.CvType;
import org.opencv.core.Mat;

import android.os.Bundle;
import android.view.Window;
import android.view.WindowManager;
import android.app.Activity;
import android.content.pm.ActivityInfo;

public class MainActivity extends Activity implements CvCameraViewListener2 {
private Mat mRgba;
private CameraBridgeViewBase mOpenCvCameraView;

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;
}
}
};

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
setContentView(R.layout.activity_main);

mOpenCvCameraView = (CameraBridgeViewBase) findViewById(R.id.color_blob_detection_activity_surface_view);
mOpenCvCameraView.setCvCameraViewListener(this);
}
@Override
public void onResume(){
super.onResume();
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_3, this, mLoaderCallback);
}
@Override
public void onCameraViewStarted(int width, int height) {
// TODO Auto-generated method stub
mRgba = new Mat(height, width, CvType.CV_8UC4);
}

@Override
public void onCameraViewStopped() {
// TODO Auto-generated method stub
mRgba.release();
}

@Override
public Mat onCameraFrame(CvCameraViewFrame inputFrame) {
// TODO Auto-generated method stub
mRgba = inputFrame.rgba();
return mRgba;
}
}

  这是我根据opencv官方提供的代码精简出来的。流程来说挺简单的,就不多讲了。


效果演示

  opencv这个版本的Android库比较坑,要运行使用opencv库的apk,就必须先安装一个opencv的库的apk。这个库的apk在之前opencv官方下载那个包里面有。
安装后如下:





  如截图所示:两个apk图标。分别就是自己新建的opencv预览apk和opencv的库apk。
然后点击运行预览apk的效果如下:






参考代码如下:http://download.csdn.net/detail/u011630458/8403599
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: