在Android上调用OpenCV 2.4.10库函数

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

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

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

1、先新建一个安卓项目:
之后一路 next,然后 Finish。 完成之后多了一个 展开之后项目里面是这样的 在Android上调用OpenCV 2.4.10库函数_第1张图片 在Android上调用OpenCV 2.4.10库函数_第2张图片
在Android上调用OpenCV 2.4.10库函数_第3张图片

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库文件

在Android上调用OpenCV 2.4.10库函数_第4张图片

在Android上调用OpenCV 2.4.10库函数_第5张图片 添加完成后会看到

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




保存apply即可。


新建xml文件 在Android上调用OpenCV 2.4.10库函数_第6张图片

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. Android - 文件读写操作总结
  2. android 开发 文件读写应用案例分析
  3. android 资源文件命名规则 drawable mipmap一样的
  4. android判断文件类型是否为音频文件
  5. Android文件存储位置简述
  6. android纹理图片的加载与修改
  7. Android图片加载与缓存开源框架:Android Glide

随机推荐

  1. Android开发主页框架搭建
  2. Android 如何删除短信
  3. android 按比例缩放图片(适屏)
  4. 【android】说说GestureDetector.OnGestu
  5. [置顶] android中自定义View
  6. android 接收锁屏广播
  7. android 文字或者图片生成.pdf文件
  8. android notification和notificationmana
  9. android file 记录
  10. android(7)(写数据权限)