Android上使用OpenCV处理图像
来源:互联网 发布:mac 固态硬盘windows10 编辑:程序博客网 时间:2024/06/08 13:33
本文会介绍在Android项目中使用OpenCV的一种方法,并会给出两个demo。
文中涉及开发环境在《Windows下Android开发环境的配置》的基础之上进行搭建。
在http://sourceforge.net/projects/opencvlibrary/files/opencv-android/2.4.8/下载OpenCV-2.4.8-android-sdk.zip。假定解压到目录D:\workspace\opencv-android-sdk。
打开Eclipse,点击File->Import->General->Existing Projects into Workspace,找到D:\workspace\opencv-android-sdk,选择导入OpenCV Library,也可以再导入一两个sample,但最好不要全部导入,因为如果设置了自动编译,会降低每次打开Eclipse的速度。
导入完成后,右击OpenCV Library,点击Properties->Android,选择合适的Build Project Target,即Android的API版本。
可以尝试运行一下OpenCV sample项目,检查一下设置是否正确。
仿照文章《Windows下Android开发环境的配置》的步骤创建一个新的Android项目。假定包名为net.johnhany.grayprocessjni。所需添加的文件及代码如下所示:
GrayProcess.java
ImageProcess.java
activity_gray_process.xml
res\values\strings.xml
把一张图片拷贝到tes\drawable-hdpi,假设图片名称为testpic1。
在项目目录里新建一个名为“jni”的文件夹,里面添加如下3个文件:
Android.mk
这个文件负责把cpp或c文件编译成可以被Android程序调用的.so库.
Application.mk
ImageProc.cpp
这个cpp文件负责调用OpenCV函数进行图像处理。
项目结构大致如图:
打开cmd.exe,输入:
此时classes文件夹内会多出一个net_johnhany_grayprocessjni_ImageProc.h文件,把它拷贝到jni文件夹内,并把名字改为ImageProc.h。
在Eclipse内点击Window->Preferences->C/C++->Build->Environment,增加一个环境变量:
变量名值NDKROOTD:\android-ndk右击项目名称,点击New->Other->C/C++->Convert to a C/C++ Project (Adds C/C++ Nature)。
选择C++ Project,工具链选择Makefile的Other Toolchain(由于我的项目已经转换过,所以没有显示在项目名称列表里)。
转换完成后会提示是否切换到C/C++视图,选择不切换。
此时在代码文件内会有大量的错误,这是由于还没有包含进所需的C++库文件。
右击项目名称,点击Refresh。
再右击项目名称,点击Properties->Android,选择合适的Android API版本,点击Library中的Add,选择OpenCV Library。
点击C/C++ Build,把Builder Settings中的Build Command改为:
${NDKROOT}/ndk-build.cmd
Behaviour的设置如图:
点击C/C++ General->Paths and Symbols->Includes,在GNU C++中添加如下路径:
${NDKROOT}/platforms/android-15/arch-arm/usr/include
${NDKROOT}/sources/cxx-stl/gnu-libstdc++/4.6/include
${NDKROOT}/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/include
${ProjDirPath}/../OpenCV-2.4.8-android-sdk/sdk/native/jni/include
这里的路径最好用NDKROOT或ProjDirPath的相对路径表示,如果用带有盘符的绝对路径可能会由于编译工具和Windows系统的表示方式不同而造成无法编译(如Cygwin)。
还要在安卓设备上安装OpenCV Manager。如果使用的是模拟器,打开cmd.exe,输入:
如果使用的是手机,把D:\workspace\opencv-android-sdk\apk目录下的OpenCV_2.4.8_Manager_2.16_armv7a-neon.apk拷贝到手机中,在手机中手动安装。
点击Run,会自动完成编译、打开模拟器、安装、启动运行等步骤;或者在编译之后把bin文件夹内的apk文件拷贝到手机里,手动安装,运行。
运行效果如下,点击按钮,图片变成灰色:
这里有另一个使用OpenCV的例子,支持的图像处理方法更多,可以切换图像,还可以用手指选择要作处理的区域:
https://github.com/johnhany/AndroidProj/tree/master/ImageProcess
- Android上使用OpenCV处理图像
- Android上使用OpenCV处理图像
- 使用opencv处理android中的yuv420sp(NV21)图像
- 【OpenCV图像处理】四、图像的几何变换(上)
- 【OpenCV图像处理】十五、图像空域滤波(上)
- 【OpenCV图像处理】二十二、图像边缘检测(上)
- android 使用NDK进行图像处理(openCV)时的图像转换问题(灰度图显示)
- 在android平台上利用opencv进行图像处理之边沿检测
- 在Android平台上利用opencv进行图像处理之边缘检测、灰度变换、缩小
- 对比使用C# unsafe代码和OpenCV进行图像处理的效率(上)
- 【Android】opencv图像处理之提取骨架
- 使用OpenCV开发iOS图像处理应用
- MFC中使用openCV显示、处理图像
- 【图像处理】OpenCV函数threshold的使用
- MFC中使用openCV显示、处理图像
- iOS 下使用 OpenCV 实现图像处理
- python 使用opencv 对图像mask处理
- [置顶]opencv图像处理3--opencv下使用滑动条
- VirtualBox下安装虚拟机的分辨率问题
- 51单片机存储器小结
- SDL 与 FFMPEG 音乐播放器开发(4)——使用FFMPEG库解码
- Linux poll机制分析
- P09 (**) 把连续重复的列表元素打包为子列表
- Android上使用OpenCV处理图像
- NXZFW项目总结(二)
- 使用AndroidAnnotations框架优雅地实现ListView功能例子
- 极客必备之C++ 定时器
- 黑马程序员--C语言自学笔记---15C语言版通讯录
- apache常用模块介绍
- Mifare522 Module使用说明书
- Mysql数据库的优化,慢查询
- 写网站的思路启程