在Android上调用OpenCV 2.4.10库函数
16lz
2021-01-23
在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>
完成。
更多相关文章
- Android - 文件读写操作总结
- android 开发 文件读写应用案例分析
- android 资源文件命名规则 drawable mipmap一样的
- android判断文件类型是否为音频文件
- Android文件存储位置简述
- android纹理图片的加载与修改
- Android图片加载与缓存开源框架:Android Glide