我的Android使用openCV记录(2)
来源:互联网 发布:男士淡斑清洁面膜知乎 编辑:程序博客网 时间:2024/06/07 12:26
博主QQ:1356438802
二、opecnv for android 开发环境搭建:
opencv for android SDK 安装:
进入官网(http://opencv.org/)下载OpenCV4Android并解压,其目录结构如下:
其中,
(1). sdk目录即是我们开发opencv所需要的类库;
(2). samples目录中存放着若干opencv应用示例(包括人脸检测等),可为我们进行android下的opencv开发提供参考;
(3). doc目录为opencv类库的使用说明及api文档等;
(4). apk目录则存放着对应于各内核版本的OpenCV_2.4.3.2_Manager_2.4应用安装包。此应用用来管理手机设备中的opencv类库,在运行opencv应用之前,必须确保手机中已经安装了OpenCV_2.4.3.2_Manager_2.4_*.apk,否则opencv应用将会因为无法加载opencv类库而无法运行。
将SDK引入工作空间
(1) 选择一个路径,新建文件夹做为工作空间(我在E盘根目录下新建workspace目录来做为工作空间);
(2) 将OpenCV-2.4.3.2-android-sdk中的sdk目录copy至工作空间,并将其更名为OpenCV-SDK(是否更改名称无所谓,这是我个人习惯而已);
(3) 以新建的目录为工作空间,打开eclipse;
(4) 将OpenCV-SDK引入到工作空间中,如下图所示:
三、使用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中,如下图所示:
- <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>
- <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>
(3) MainActivity.java
- package com.iron.grayprocess;
- 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.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
- 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记录(2)
- 我的Android使用openCV记录(1)
- 我的Android使用openCV记录(3)
- 我的Ubuntu安装使用openCV记录(2)
- 我的Ubuntu安装使用openCV记录(1)
- 我的Ubuntu安装使用openCV记录(3)——for QT
- 记录我的Android学习
- 我的git使用记录
- Android Studio OpenCV 记录
- OpenCv使用记录
- 记录我的android之旅
- 记录我的android学习之路
- 我的Android记录(WebView&permissiom)
- 记录下我使用的UI
- 我的学习记录2
- Android Studio的使用记录
- Android Animation的使用记录
- 记录:Android SQLite的使用
- c++运算符重载
- 【排序算法】堆排序原理及Java实现
- 第9周-项目1-深复制体验(2)
- MDF结合Learning rate adjust应用
- Android工程下build target,minSdkVersion,targetSdkVersion,maxSdkVersion概念区分
- 我的Android使用openCV记录(2)
- Plus One
- Android 在Service里面启动Activity
- 线程的基本操作
- CSS样式五--颜色值、长度值
- uva 10714 Ants
- 第9周-项目1-深复制体验(3)
- 模乘逆元与孙子定理
- textField限制输入长度