Opencv开发android应用
来源:互联网 发布:java软件工程师查工资 编辑:程序博客网 时间:2024/05/16 07:28
为了大家少走弯路,写这篇博客。目的是在开发android程序时使用opencv库
一般有两种方法,第一种是异步调用,第二种是静态初始化(需要NDK,CDT插件)。
下面写的是异步调用!!
环境
windows7 、opencv2.4.9、eclipse
一、下载安装opencv android SDK
http://opencv.org/downloads.html
二、配置opencv android环境
1、将opencv android SDK中的SDK文件夹拷到自己的工作空间
2、导入opencv库
File-->Import-->Existing projects into workspace
找到你刚才拷到工作空间下的SDK文件夹,点击finish
会出现这个
3、新建Android工程TestOpencvAndroid,右击选properties->Android,点击Add
选Opencv Library
4、将SD\native\libs下的所有东西拷进android工程下的libs文件夹
5、测试代码
package com.example.testopencvandroid;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.util.Log;import android.app.Activity; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Bitmap.Config;import android.view.Menu;import android.view.MenuItem;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; } } }; @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main); Log.i("main", "Trying to load OpenCV library"); if (!OpenCVLoader.initDebug()) { Log.e("main", "Cannot connect to OpenCV Manager"); } else { mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS); } 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); }@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {// Handle action bar item clicks here. The action bar will// automatically handle clicks on the Home/Up button, so long// as you specify a parent activity in AndroidManifest.xml.int id = item.getItemId();if (id == R.id.action_settings) {return true;}return super.onOptionsItemSelected(item);}@Overridepublic void onClick(View v) {// TODO Auto-generated method stub 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); }}注意:加入这段代码就不需安装opencv Manager
//OpenCV类库加载并初始化成功后的回调函数,在此我们不进行任何操作 private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) { @Override public void onManagerConnected(int status) { switch (status) { case LoaderCallbackInterface.SUCCESS:{ } break; default:{ super.onManagerConnected(status); } break; } } };
0 0
- Opencv开发android应用
- opencv 手写选择题阅卷 (四)Android端 手机应用开发
- Android NDK开发之 opencv manage 免安装生成opencv应用
- 使用Eclipse开发OpenCV应用
- 【OpenCV】***映美精相机应用开发
- OpenCV+Android开发配置
- OpenCV的Android开发
- opencv for android开发
- Android opencv开发 opencvmanager
- android 应用结构with opencv
- OpenCV 在 Android 中的应用
- Android应用opencv编译出错
- 在Android 平台 开发 OpenCV方面的应用,将是我以后的技术开发方向
- Android Studio 1.5 opencv开发
- Android OpenCV开发环境搭建
- DM8148 开发记录 四 opencv 应用c6accel
- 使用OpenCV开发iOS图像处理应用
- OpenCV android sdk开发实例 OpenCV android NDK实例
- 设计模式系列(十三)迭代器模式(Iterator Pattern)
- python windows下的安装配置以及django的学习经验
- LCA+最小生成树 Codeforces609E Minimum spanning tree for each edge
- 2015-12-20 FFC
- DIV+CSS实操七:中文系内容模块控制文本不换行和超出指定宽度后用省略号代替
- Opencv开发android应用
- SEO:我对原创文章的几点看法_岑辉宇博客
- 浏览器兼容多文件上传控件
- mysql常用操作
- 2. Oracle概念笔记——数据库简介
- uva 10570—— Meeting with Aliens
- Linux 学习第三周
- 聊聊百度联盟对SEO的影响
- BZOJ2738: 矩阵乘法