`

Android环境下安装openCV

 
阅读更多

今天因为课题的关系需要在安卓上安装openCVC环境,但是参考网上很多教程都不够齐全,下面主要参考了一下两个教程进行配置,两个教程各有互补,然后对我的整个安装过程做个说明

 

这篇文章完全参考自一下参考链接:

比较全的安装:http://blog.csdn.net/pwh0996/article/details/8957764/

NDK安装:http://jingyan.baidu.com/article/5d6edee22d908799eadeec9f.html

 如果在安装过程中有什么问题可以留言,也可以直接看上述博客

 

 

准备工具:

操作系统:window7 64位

Java版本:java8 64位

eclipse:eclipse for J2ee

android SDK 

Android NDK r8

opencv for android 3.0.0

 

一,Java以及Android环境搭建

Java步骤:

1,安装JAVA JDK 我是装的Java 8当然Java7也是可以的

2,配置环境变量:

      设置 JAVA_HOME 为JDK的安装目录 如我的目录是 D:\Program Files\Java\jdk1.8.0_65

      在环境变量path中加入 %JAVA_HOME%\bin 注意需要在前面加上分号

      Java7及其以上的不要配置classpath,也可以配置classpath为点号 . (点号表示当前目录)

3,在cmd中输入 javac-version如果配置成功则会出现你的JDK版本信息

 

二, Android环境搭建(我是基于eclipse+ADT+AndroidSDK搭建的)

1,安装android SDK

                 在Android Developers下载android-sdk_r05-windows.zip,下载完成后解压到任意路径。

  • 运行SDK Setup.exe,点击Available Packages。如果没有出现可安装的包,请点击Settings,选中Misc中的"Force https://..."这项,再点击Available Packages 。
  • 选择希望安装的SDK及其文档或者其它包,点击Installation Selected、Accept All、Install Accepted,开始下载安装所选包
  • 在用户变量中新建PATH值为:Android SDK中的tools绝对路径(本机为D:\AndroidDevelop\android-sdk-windows\tools)。


  •  
  • 在cmd中输入 andriod -h检测是否安装成功,成功会有android安装信息显示

        2,安装ADT插件

              我是使用ADT在线安装,比较方便,具体方法是 在eclipse中依次打开:

              Help->Install new software

              然后在work with框的右侧点击 ADD,如下图配置

             
              
             点击确认之后会出现

              
             
              注意不要勾选update all 那一项,否则会在安装过程中卡很久,接下来就下一步下一步就行了,安装完成中后重新打开eclipse即可

        3,完成之后:

  • 选择Window > Preferences...
  • 在左边的面板选择Android,然后在右侧点击Browse...并选中SDK路径,本机为: 
    D:\AndroidDevelop\android-sdk-windows
  • 点击Apply、OK。配置完成

        4,创建android avd 虚拟机,这个比较简单,可自行百度

 

 

         三,NDK环境搭建

        最新的NDK(r7及其以上)已经内置了cygwin,也不用去装CDT,会非常方便,具体步骤如下:

         1,下载NDK 下载链接为:http://developer.android.com/tools/sdk/ndk/index.html

        2,打开Eclipse,点Window->Preferences->Android->NDK,设置NDK路径,例如我的是的是D:\Android\AndroidEnvir\android-ndk-r8



            
               

        

      四,android openCV环境搭建

             这一段参考自  http://blog.csdn.net/pwh0996/article/details/8957764/

             1,进入官网(http://opencv.org/)下载OpenCV4Android并解压,其目录结构如下:

            
              

           其中,sdk目录即是我们开发opencv所需要的类库;samples目录中存放着若干opencv应用示例(包括人脸检测等),可为我们进行android下的opencv开发提供参考;doc目录为opencv类库的使用说明及api文档等;而apk目录则存放着对应于各内核     版本的OpenCV_2.4.3.2_Manager_2.4应用安装包。此应用用来管理手机设备中的opencv类库,在运行opencv应用之前,必须确保手机中已经安装了OpenCV_2.4.3.2_Manager_2.4_*.apk,如何安装apk到虚拟机见(http://jingyan.baidu.com/album/19020a0a253302529d284213.html?picindex=1,需要说明的是有时候会出现那个Open CV  was not initialed correctly,在那个apk包中多试几个apk就行了否则opencv应用将会因为无法加载opencv类库而无法运行。

 

        2,将SDK引入到工作空间

        和传统的eclipse引入工程一样,将opeCV目录下的sdk项目引入到eclipse工作空间中。具体是:file->import->existing project into workspace然后选择openCVC的那个sdk项目

        注意:有时候这个引入的项目会因为android版本不一致导致错误,具体表现是代码中引入的android包全报错,解决的方法是 项目->右击->properties->android  然后勾选相应的版本即可

 

        3使用Java API开发android程序

        创建工程

        (1) 打开eclipse,创建android应用工程GrayProcess;

        (2) 将测试图像lss.jpg(图片自选)添加到资源目录res/drawable-hdpi中;

        (3) 在Package Explorer中选择项目GrayProcess,单击右键在弹出菜单中选择Properties,然后在弹出的Properties窗口中左侧选择Android,然后点击右下方的Add按钮,选择OpenCV Library 3.0.0并点击OK,操作完成后,会将OpenCV类库添加到GrayProcess的Android Dependencies中,如下图所示:



 

          
             

       项目代码:

       布局文件:

       

<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文件

 

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">GrayPorcess</string>
    <string name="hello_world">Hello world!</string>
    <string name="action_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>

        

 

MainActivity.java文件

  

package com.luchi.grayporcess;



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.imgproc.Imgproc;

import android.os.Bundle;
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 MainActivity extends Activity implements OnClickListener{

	private Button btnProc;
	private ImageView imageView;
	private Bitmap bmp;
	
	//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.activity_main);
        btnProc = (Button) findViewById(R.id.btn_gray_process);
        imageView = (ImageView) findViewById(R.id.image_view);
        //将lena图像加载程序中并进行显示
        bmp = BitmapFactory.decodeResource(getResources(), R.drawable.lss);
        imageView.setImageBitmap(bmp);
        btnProc.setOnClickListener(this);
    }

	@Override
	public void onClick(View v) {
		Mat rgbMat = new Mat();
		Mat grayMat = new Mat();
		//获取lena彩色图像所对应的像素数据
		Utils.bitmapToMat(bmp, rgbMat);
		//将彩色图像数据转换为灰度图像数据并存储到grayMat中
		Imgproc.cvtColor(rgbMat, grayMat, Imgproc.COLOR_RGB2GRAY);
		//创建一个灰度图像
		Bitmap grayBmp = Bitmap.createBitmap(bmp.getWidth(), bmp.getHeight(), Config.RGB_565);
		//将矩阵grayMat转换为灰度图像
		Utils.matToBitmap(grayMat, grayBmp);
		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);
    }
}

 
 运行结果:

 

 

 

至此就完成了android openCV环境的搭建
 

  • 大小: 57.9 KB
  • 大小: 69.6 KB
  • 大小: 51.3 KB
  • 大小: 36.7 KB
  • 大小: 13.1 KB
  • 大小: 48.7 KB
  • 大小: 140.4 KB
  • 大小: 99.2 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics