我的Android使用openCV记录(2)
16lz
2021-01-23
二、使用java API开发android
创建工程
(1) 打开eclipse,创建android应用工程GrayProcess;
(2) 将测试图像lena.jpg添加到资源目录res/drawable-hdpi中;
(3) 在Package Explorer中选择项目GrayProcess,单击右键在弹出菜单中选择Properties,然后在弹出的Properties窗口中左侧选择Android,然后点击右下方的Add按钮,选择OpenCV Library 2.4.3并点击OK,操作完成后,会将OpenCV类库添加到GrayProcess的Android Dependencies中,如下图所示:
(1) 字符串资源文件:strings.xml
[html] view plain copy
- <resources>
- <stringname="app_name">GrayProcess</string>
- <stringname="hello_world">Helloworld!</string>
- <stringname="menu_settings">Settings</string>
- <stringname="title_activity_main">MainActivity</string>
- <stringname="str_proc">grayprocess</string>
- <stringname="str_desc">imagedescription</string>
- </resources>
- <LinearLayoutxmlns: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>
(3) MainActivity.java [java] view plain copy
- packagecom.iron.grayprocess;
- importorg.opencv.android.BaseLoaderCallback;
- importorg.opencv.android.LoaderCallbackInterface;
- importorg.opencv.android.OpenCVLoader;
- importorg.opencv.android.Utils;
- importorg.opencv.core.Mat;
- importorg.opencv.imgproc.Imgproc;
- importandroid.os.Bundle;
- importandroid.app.Activity;
- importandroid.graphics.Bitmap;
- importandroid.graphics.BitmapFactory;
- importandroid.graphics.Bitmap.Config;
- importandroid.view.View;
- importandroid.view.View.OnClickListener;
- importandroid.widget.Button;
- importandroid.widget.ImageView;
- publicclassMainActivityextendsActivityimplementsOnClickListener{
- privateButtonbtnProc;
- privateImageViewimageView;
- privateBitmapbmp;
- //OpenCV类库加载并初始化成功后的回调函数,在此我们不进行任何操作
- privateBaseLoaderCallbackmLoaderCallback=newBaseLoaderCallback(this){
- @Override
- publicvoidonManagerConnected(intstatus){
- switch(status){
- caseLoaderCallbackInterface.SUCCESS:{
- }break;
- default:{
- super.onManagerConnected(status);
- }break;
- }
- }
- };
- @Override
- publicvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- btnProc=(Button)findViewById(R.id.btn_gray_process);
- imageView=(ImageView)findViewById(R.id.image_view);
- //将lena图像加载程序中并进行显示
- bmp=BitmapFactory.decodeResource(getResources(),R.drawable.lena);
- imageView.setImageBitmap(bmp);
- btnProc.setOnClickListener(this);
- }
- @Override
- publicvoidonClick(Viewv){
- MatrgbMat=newMat();
- MatgrayMat=newMat();
- //获取lena彩色图像所对应的像素数据
- Utils.bitmapToMat(bmp,rgbMat);
- //将彩色图像数据转换为灰度图像数据并存储到grayMat中
- Imgproc.cvtColor(rgbMat,grayMat,Imgproc.COLOR_RGB2GRAY);
- //创建一个灰度图像
- BitmapgrayBmp=Bitmap.createBitmap(bmp.getWidth(),bmp.getHeight(),Config.RGB_565);
- //将矩阵grayMat转换为灰度图像
- Utils.matToBitmap(grayMat,grayBmp);
- imageView.setImageBitmap(grayBmp);
- }
- @Override
- publicvoidonResume(){
- 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);
- }
- }
3.1.3 运行结果
更多相关文章
- android闹钟――原代码
- android编写访问http的代码
- 跟着第二行代码回顾Android--持久化技术
- Android常用三栏式滑动/滚动视图(View)的设计与实现代码
- Android Http请求的代码
- Android 源代码编后的目录分析
- 代码混淆
- PendingIntent实现原理和代码