二、使用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
  1. <resources>
  2. <stringname="app_name">GrayProcess</string>
  3. <stringname="hello_world">Helloworld!</string>
  4. <stringname="menu_settings">Settings</string>
  5. <stringname="title_activity_main">MainActivity</string>
  6. <stringname="str_proc">grayprocess</string>
  7. <stringname="str_desc">imagedescription</string>
  8. </resources>
(2) 布局文件:main.xml [html] view plain copy
  1. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:tools="http://schemas.android.com/tools"
  3. android:orientation="vertical"
  4. android:layout_width="match_parent"
  5. android:layout_height="match_parent">
  6. <Button
  7. android:id="@+id/btn_gray_process"
  8. android:layout_width="fill_parent"
  9. android:layout_height="wrap_content"
  10. android:text="@string/str_proc"/>
  11. <ImageView
  12. android:id="@+id/image_view"
  13. android:layout_width="wrap_content"
  14. android:layout_height="wrap_content"
  15. android:contentDescription="@string/str_proc"/>
  16. </LinearLayout>

(3) MainActivity.java [java] view plain copy
  1. packagecom.iron.grayprocess;
  2. importorg.opencv.android.BaseLoaderCallback;
  3. importorg.opencv.android.LoaderCallbackInterface;
  4. importorg.opencv.android.OpenCVLoader;
  5. importorg.opencv.android.Utils;
  6. importorg.opencv.core.Mat;
  7. importorg.opencv.imgproc.Imgproc;
  8. importandroid.os.Bundle;
  9. importandroid.app.Activity;
  10. importandroid.graphics.Bitmap;
  11. importandroid.graphics.BitmapFactory;
  12. importandroid.graphics.Bitmap.Config;
  13. importandroid.view.View;
  14. importandroid.view.View.OnClickListener;
  15. importandroid.widget.Button;
  16. importandroid.widget.ImageView;
  17. publicclassMainActivityextendsActivityimplementsOnClickListener{
  18. privateButtonbtnProc;
  19. privateImageViewimageView;
  20. privateBitmapbmp;
  21. //OpenCV类库加载并初始化成功后的回调函数,在此我们不进行任何操作
  22. privateBaseLoaderCallbackmLoaderCallback=newBaseLoaderCallback(this){
  23. @Override
  24. publicvoidonManagerConnected(intstatus){
  25. switch(status){
  26. caseLoaderCallbackInterface.SUCCESS:{
  27. }break;
  28. default:{
  29. super.onManagerConnected(status);
  30. }break;
  31. }
  32. }
  33. };
  34. @Override
  35. publicvoidonCreate(BundlesavedInstanceState){
  36. super.onCreate(savedInstanceState);
  37. setContentView(R.layout.main);
  38. btnProc=(Button)findViewById(R.id.btn_gray_process);
  39. imageView=(ImageView)findViewById(R.id.image_view);
  40. //将lena图像加载程序中并进行显示
  41. bmp=BitmapFactory.decodeResource(getResources(),R.drawable.lena);
  42. imageView.setImageBitmap(bmp);
  43. btnProc.setOnClickListener(this);
  44. }
  45. @Override
  46. publicvoidonClick(Viewv){
  47. MatrgbMat=newMat();
  48. MatgrayMat=newMat();
  49. //获取lena彩色图像所对应的像素数据
  50. Utils.bitmapToMat(bmp,rgbMat);
  51. //将彩色图像数据转换为灰度图像数据并存储到grayMat中
  52. Imgproc.cvtColor(rgbMat,grayMat,Imgproc.COLOR_RGB2GRAY);
  53. //创建一个灰度图像
  54. BitmapgrayBmp=Bitmap.createBitmap(bmp.getWidth(),bmp.getHeight(),Config.RGB_565);
  55. //将矩阵grayMat转换为灰度图像
  56. Utils.matToBitmap(grayMat,grayBmp);
  57. imageView.setImageBitmap(grayBmp);
  58. }
  59. @Override
  60. publicvoidonResume(){
  61. super.onResume();
  62. //通过OpenCV引擎服务加载并初始化OpenCV类库,所谓OpenCV引擎服务即是
  63. //OpenCV_2.4.3.2_Manager_2.4_*.apk程序包,存在于OpenCV安装包的apk目录中
  64. OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_3,this,mLoaderCallback);
  65. }
  66. }

3.1.3 运行结果

更多相关文章

  1. 搭建 Android(安卓)X86 系统,替代AVD模拟器,解决运行效率慢的问题(
  2. Android(安卓)使用模拟位置(支持Android(安卓)6.0)
  3. 使用手机调试Android软件
  4. Android(安卓)studio4.0 解决导入包Error 报错问题
  5. selector选择器
  6. Android开发实战三之导入现有Android工程项目
  7. android背景选择器selector用法汇总
  8. 教你配置安卓开发环境!(附带开发通讯教程)
  9. Ubuntu 下用 Eclipse 编译调试 Android(安卓)NDK 工程

随机推荐

  1. android:scrollbarStyle属性及滚动条和分
  2. Android(安卓)之 SQLite数据库的使用
  3. Android图形系统的分析与移植--一、Andro
  4. Android(安卓)TextView内容过长加省略号
  5. Android图形系统的分析与移植--一、Andro
  6. Android(安卓)并发之CAS(原子操作)简单介绍
  7. Android(安卓)Webview 和Javascript交互,
  8. Android之相对布局
  9. Android调用输入法软键盘,返回输入的内容
  10. Android(安卓)API 中文(13) —— ToggleBut