OpenCV也有Java数据结构的包,不过计算速度还是很慢,非不得已不使用此种方式调用OpenCV。使用NDK编写底层OpenCv的调用代码,使用JNI对代码进行封装,可以稍微提高一点效率。

参考链接:http://www.tuicool.com/articles/yaeeuu

安卓使用OpenCV注意事项:

注意事项: 包含OpenCV的工程最好放置在 OpenCV-2.4.10-android-sdk\samples 目录下,省却很多 莫名其妙配置的麻烦。

一、 添加头文件包含:

对自己建立的SO包里面的JNI源文件,添加即将使用到的头文件包含:

#include <jni.h>

#include <string.h>
#include <stdio.h>
#include <android/log.h> <u>#include "rec3D.h"</u> #ifndef _Included_org_opencv_samples_fd_DetectionBasedTracker
#define _Included_org_opencv_samples_fd_DetectionBasedTracker
#ifdef __cplusplus
extern "C" {
#endif //JNIEnv* jniEnv;
extern "C" jstring Java_com_example_feeljulygpsmap_FeelJulyActivity_careJuly(JNIEnv *env, jobject thiz) ;
extern "C" jint Java_com_example_feeljulygpsmap_FeelJulyActivity_careJulyIn(JNIEnv *env, jobject thiz,jint showCode) ;
extern "C" jintArray Java_com_example_feeljulygpsmap_FeelJulyActivity_careJulyArray(JNIEnv *env, jobject thiz,jintArray InCode) ; #ifdef __cplusplus
}
#endif
#endif

使用到OpenCV的源文件:

#pragma once

#ifndef _REC3D_H
#define _REC3D_H <u>#include <opencv2/core/core.hpp>
#include <opencv2/video/video.hpp>
#include <opencv2/calib3d/calib3d.hpp></u> #include <iostream>
#include <vector> #include <stdlib.h> using namespace cv;
using namespace std; class MyCamera{ public:
cv::Mat intrinsic_Mat;
cv::Mat disCoeff;

二、在工程中添加OpenCV的目录包含和库引用

文件:Android.mk

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_C_INCLUDES := C:\QT\OpenCV-3.0-android-sdk\sdk\native\jni\include OPENCV_LIB_TYPE := static ifeq ("$(wildcard $(OPENCV_MK_PATH))","")
#try to load OpenCV.mk from default install location
include C:\QT\OpenCV-3.0-android-sdk\sdk\native\jni\OpenCV.mk
else
include $(OPENCV_MK_PATH)
endif #include $(CLEAR_VARS) LOCAL_MODULE := feelJulyGpsMap
LOCAL_SRC_FILES := feelJulyGpsMap.cpp \
rec3D.cpp #LOCAL_LDLIBS := -landroid LOCAL_LDLIBS += -L$(SYSROOT)/usr/lib -llog
include $(BUILD_SHARED_LIBRARY)

在此注意事项:

LOCAL_C_INCLUDES := C:\QT\OpenCV-3.0-android-sdk\sdk\native\jni\include

为OpenCV的C++ 头文件包含目录

include C:\QT\OpenCV-3.0-android-sdk\sdk\native\jni\OpenCV.mk 

为OpenCV的库文件包含目录

三、使用OpenCV编译程序

snip..............................................

四、使用Android Native模式调试C++代码部分

snip.............................

备注:cv::solvePnP使用OpenCv解决多点透视问题!

安卓JNI使用OpenCV的更多相关文章

  1. 安卓JNI使用C++类

    安卓JNI使用C++类,同时可使用C++的类成员变量,这就必须保证程序持续保存Native状态,即长期维护C++对象的地址.完成初始化之后,需要使用对象成员的java层函数需要传入对象的地址. 一.N ...

  2. OpenCV4Android释疑: 透析Android以JNI调OpenCV的三种方式(让OpenCVManager永不困扰)

    OpenCV4Android释疑: 透析Android以JNI调OpenCV的三种方式(让OpenCVManager永不困扰) 前文曾详细探讨了关于OpenCV的使用,原本以为天下已太平.但不断有人反 ...

  3. 关于Android Studio中使用jni进行opencv配置开发环境的要素秘诀

    使用jni进行opencv开发可以快速地将PC端的opencv代码移植到手机上,但是如何在android studio下进行配置,网上几乎找不到教程,大多都是eclipse下使用mk文件的方法,找不到 ...

  4. android studio 使用 jni 编译 opencv 完整实例 之 图像边缘检测!从此在andrid中自由使用 图像匹配、识别、检测

    目录: 1,过程感慨: 2,运行环境: 3,准备工作: 4,编译 .so 5,遇到的关键问题及其解决方法 6,实现效果截图. (原创:转载声明出处:http://www.cnblogs.com/lin ...

  5. android studio 使用 jni 编译 opencv 完整实例 之 图像边缘检测!

    目录: 1,过程感慨: 2,运行环境: 3,准备工作: 4,编译 .so 5,遇到的关键问题及其解决方法 6,实现效果截图. ------------------------------------- ...

  6. 安卓JNI精细化讲解,让你彻底了解JNI(一):环境搭建与HelloWord

    目录 1.基础概念 ├──1.1.JNI ├──1.2.NDK ├──1.3.CMake与ndk-build 2.环境搭建 3.Native C++ 项目(HelloWord案例) ├── 3.1.项 ...

  7. 安卓JNI精细化讲解,让你彻底了解JNI(二):用法解析

    目录 用法解析 ├── 1.JNI函数 │ ├── 1.1.extern "C" │ ├── 1.2.JNIEXPORT.JNICALL │ ├── 1.3.函数名 │ ├── 1 ...

  8. 安卓---JNI使用

    交叉编译 系统平台:Windows.Mac OS.Linux CPU平台:ARM.X86.MIPS 概念:在一个平台下打包编译出还有一个平台能够运行的程序#交叉编译原理 源代码->预编译-> ...

  9. 解决安卓JNI native 线程不能正常退出问题二

    直面这个解决方法的可以看我转载的博客            https://www.cnblogs.com/Carlsblog/p/9438016.html 本方法是个投机取巧法,不过也解决了不能正常 ...

随机推荐

  1. 用Twebbrowser做可控编辑器与MSHTML

    首先要明白mshtml的属性方法: {IHTMLDocument2 方法:} write //写入 writeln //写入并换行 open //打开一个流,以收集 document.write 或 ...

  2. (40). springboot + devtools(热部署)【从零开始学Spring Boot】

    我们之前在在()Spring Boot热部署[从零开始学Spring Boot] (http://412887952-qq-com.iteye.com/blog/2291518 )讲过通过使用spri ...

  3. noip模拟赛 gcd

    题目更正:输出的a<b. 分析:这是一道数学题,范围这么大肯定是有规律的,打个表可以发现f(a,b)=k,a+b最小的a,b是斐波那契数列的第k+1项和k+2项.矩阵快速幂搞一搞就好了. #in ...

  4. nyoj 309

    #include<stdio.h> #include<stdlib.h> #define N 1100 int c[N]; int main() { int l,n,i,m,a ...

  5. nyoj_111_分数加减法_201311281341

    分数加减法 时间限制:3000 ms  |           内存限制:65535 KB 难度:2   描述 编写一个C程序,实现两个分数的加减法   输入 输入包含多行数据 每行数据是一个字符串, ...

  6. oracle latch

    (转载 : http://www.dbtan.com/2010/05/latch-free.html) Latch Free(闩锁释放):Latch Free通常被称为闩锁释放,这个名称常常引起误解, ...

  7. CF #321 (Div. 2) D

    不说了,爆内存好几次,后来醒起状态有重复... 状压+TSP #include <iostream> #include <cstdio> #include <cstrin ...

  8. 基数排序之多keyword排序运用队列

    源码例如以下: #include <stdlib.h> #include <stdio.h> typedef struct QUEUEnode* link; struct QU ...

  9. 关于Windows下程序运行的说明

    预计有非常多人首次都是通过Windows(微软的操作系统)来使用计算机的.Windows的设计导致非常多人觉得全部程序仅仅要双击一下就能够被正确运行了,所以一大堆初学程序设计的童鞋就会遇到些疑问: 为 ...

  10. POJ 3344 &amp; HDU 2414 Chessboard Dance(模拟)

    题目链接: PKU:http://poj.org/problem? id=3344 HDU:http://acm.hdu.edu.cn/showproblem.php?pid=2414 Descrip ...