在Android上调用OpenCV 2.4.10库函数

所用到除android基本开发环境之外的文件:

1、OpenCV 2.4.10 Android Manager apk。下载地址: 点击打开链接 2、OpenCV 2.4.10 Lib java。下载地址: 点击打开链接

接下来开始新建一个测试项目

1、先新建一个安卓项目:
之后一路 next,然后 Finish。 完成之后多了一个 展开之后项目里面是这样的

Java 文件内容如下:

package cn.busymonkey.test;import org.opencv.android.BaseLoaderCallback;  import org.opencv.android.LoaderCallbackInterface;  import org.opencv.android.OpenCVLoader;  import org.opencv.android.Utils;  import org.opencv.core.Mat;  import org.opencv.core.Size;import org.opencv.highgui.Highgui;  import org.opencv.imgproc.Imgproc;  import android.os.Bundle;  import android.os.Environment;import android.app.Activity;  import android.graphics.Bitmap;  import android.graphics.BitmapFactory;  import android.graphics.Bitmap.Config;  import android.view.View;  import android.view.View.OnClickListener;  import android.widget.Button;  import android.widget.ImageView;    public class opencv_test extends Activity implements OnClickListener{        private Button btnProc;      private ImageView imageView;            //OpenCV类库加载并初始化成功后的回调函数,在此我们不进行任何操作      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 onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);          setContentView(R.layout.main);          btnProc = (Button) findViewById(R.id.btn_gray_process);          imageView = (ImageView) findViewById(R.id.image_view);        Bitmap bitmapsrc = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory()+"/lenaphone.bmp");        imageView.setImageBitmap(bitmapsrc);        btnProc.setOnClickListener(this);      }        @Override      public void onClick(View v) {          Mat grayMat = Highgui.imread(Environment.getExternalStorageDirectory()+"/lenaphone.bmp", 0);        Bitmap bitmap = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory()+"/lenaphone.bmp");        Bitmap grayBmp = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Config.RGB_565);          Utils.matToBitmap(grayMat, grayBmp);        Mat srcGrayResize = new Mat();        Imgproc.resize(grayMat, srcGrayResize, new Size(200,200));        Highgui.imwrite(Environment.getExternalStorageDirectory()+"/lenaphoneGray.bmp", srcGrayResize);         imageView.setImageBitmap(grayBmp);    }            @Override      public void onResume(){          super.onResume();          //通过OpenCV引擎服务加载并初始化OpenCV类库,所谓OpenCV引擎服务即是          //OpenCV_2.4.3.2_Manager_2.4_*.apk程序包,存在于OpenCV安装包的apk目录中          OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_3, this, mLoaderCallback);      }  }

因为Java文件中调用了OpenCV的库文件,所以现在Import导入OpenCV Java库文件



添加完成后会看到

然后给自己的项目包含这个库文件




保存apply即可。


新建xml文件

xml 文件内容如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"      xmlns:tools="http://schemas.android.com/tools"      android:orientation="vertical"      android:layout_width="match_parent"      android:layout_height="match_parent" >            <Button           android:id="@+id/btn_gray_process"          android:layout_width="fill_parent"          android:layout_height="wrap_content"          android:text="@string/str_proc"/>            <ImageView        android:id="@+id/image_view"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:contentDescription="@string/str_proc" />  </LinearLayout>

string.xml 文件内容如下:

<resources>        <string name="app_name">GrayProcess</string>      <string name="hello_world">Hello world!</string>      <string name="menu_settings">Settings</string>      <string name="title_activity_main">MainActivity</string>      <string name="str_proc">gray process</string>      <string name="str_desc">image description</string>    </resources>

AndroidManifest.xml 文件内容如下:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="cn.busymonkey.test"    android:versionCode="1"    android:versionName="1.0" >    <uses-permission         android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>        <uses-sdk        android:minSdkVersion="8"        android:targetSdkVersion="19" />    <application        android:allowBackup="true"        android:icon="@drawable/ic_launcher"        android:label="@string/app_name"        android:theme="@style/AppTheme" >        <activity             android:name=".Test" >  ////////这里名字很重要,必须要跟源文件中的Java一样            <intent-filter >                  <action android:name="android.intent.action.MAIN" />                  <category android:name="android.intent.category.LAUNCHER" />              </intent-filter>          </activity>    </application></manifest>

完成。


更多相关文章

  1. 【Java CV与Android】在Android工程里配置JavaCV
  2. Android加密之文件级加密
  3. 如何监控android的流量信息
  4. Android(安卓)程序适应多种多分辨率
  5. Android(安卓)Studio 中 layout 目录分类
  6. Android中String资源文件的format方法
  7. Android(安卓)Studio项目中使用 AndroidX支持库的相关配置说明
  8. Android编译系统简要介绍和学习计划
  9. NPM 和webpack 的基础使用

随机推荐

  1. Android(安卓)Studio常见操作
  2. ios&&android复制剪贴板
  3. Java - Android(安卓)自定义控件之圆形进
  4. 有了这几个神器,瞬间逼格就上去了
  5. Android(安卓)SD 卡上创建 SQLite 数据库
  6. Android监听键盘事件
  7. Use Android(安卓)Hardware Decoder with
  8. android 多线程下载文件案例
  9. 近日
  10. 安卓通知栏自定义布局提示(NotificationC