在Android上调用OpenCV 2.4.10库函数

在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>

完成。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值