二、使用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 在CODE上查看代码片
  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 在CODE上查看代码片
  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 在CODE上查看代码片
  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闹钟――原代码
  2. android编写访问http的代码
  3. 跟着第二行代码回顾Android--持久化技术
  4. Android常用三栏式滑动/滚动视图(View)的设计与实现代码
  5. Android Http请求的代码
  6. Android 源代码编后的目录分析
  7. 代码混淆
  8. PendingIntent实现原理和代码

随机推荐

  1. Android(安卓)Theme的设置
  2. textview设置文本每行的行间距
  3. 如何使用Android(安卓)Studio开发/调试An
  4. Android内存泄漏监测(MAT)及解决办法
  5. Android(安卓)2.2.2到Android(安卓)4.2.2
  6. android 使用xml selector设置按钮点击效
  7. android EditText 全面阐述
  8. Unbuntu下Android(安卓)studio报Unable t
  9. Android开发工具(Android(安卓)Studio)
  10. java引入Android(安卓)NinePatch技术的意