首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >安卓的openCV -不是opencv- Android -sdk

安卓的openCV -不是opencv- Android -sdk
EN

Stack Overflow用户
提问于 2015-05-12 22:58:11
回答 2查看 1.4K关注 0票数 2

我想在我的安卓应用程序中使用一些原生c++代码/库。c++部分在很大程度上基于openCV。

我知道openCV - Android,并且看到了很多关于如何使用android(比如这一个)的详细教程,但这些都只是使用opencv,它只支持有限的opencv功能子集(我不是说那些在移动设备上没有意义的功能,比如gpu相关的功能,但是有些其他功能在opencv-android中根本不存在,我需要它们来编写c++代码)。

无论如何,我的问题是:我是否可以在Android项目中编译和使用openCV的“完整模块集”(使用NDK等)?

我也看到了这一个,它声称“它将为安卓构建大部分OpenCV模块”,但我不清楚如何使用它.

任何提示都将不胜感激!

EN

回答 2

Stack Overflow用户

发布于 2015-05-13 15:27:36

好的!我想我想出来了!基本上,我们需要遵循本教程,但只需替换Android.mk中的路径,以指向已编译的openCV完整版本,而不是openCV(以及其他一些小的更改;对于那些只需复制Android.mkApplication.mk中的内容的用户)。

最后,我的Android.mk看起来像这样(需要正确地设置OPENCVROOT):

代码语言:javascript
代码运行次数:0
运行
复制
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
OPENCVROOT:= /path/to/opencv-2.4.10/platforms/build_android_arm
OPENCV_CAMERA_MODULES:=on
OPENCV_INSTALL_MODULES:=on
OPENCV_LIB_TYPE:=SHARED
include ${OPENCVROOT}/OpenCV.mk
LOCAL_SRC_FILES := main.cpp
LOCAL_LDLIBS += -llog
LOCAL_MODULE := hello
include $(BUILD_SHARED_LIBRARY)

Application.mk看起来是这样的:

代码语言:javascript
代码运行次数:0
运行
复制
APP_STL := gnustl_static
APP_CPPFLAGS := -frtti -fexceptions
APP_ABI := armeabi-v7a
APP_PLATFORM := android-19

关于使用Android编译openCV的简短说明:

对于使用NDK编译完整openCV,仍然可以使用上述这里方法;描述基于NDK-r8e,但如果需要,可以下载NDK-r10d并使用它。我不得不在openCV源代码中关闭与cuda相关的部分,以便用NDK成功地编译它(只需在cmake之后的最后一行将-D WITH_CUDA=OFF添加到opencv-2.4.10/platforms/scripts/cmake_android_arm.sh中即可!)。如果您需要有非免费的模块(如SURF和SIFT,不要从github克隆它,只需从这里下载它就可以了;顺便说一下,我使用了2.4.10版本)。

现在,我几乎可以访问本机openCV代码中的几乎所有c++功能,我正在将这些功能集成到我的Android中!

我希望这对其他人也有帮助!

票数 1
EN

Stack Overflow用户

发布于 2015-05-13 01:51:33

您应该研究JNI (),它是用Java包装C库的一种方法。

此外,您可能想要考虑获得这本书:用实际的计算机视觉项目掌握OpenCV

更详细地说明了这一点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30202842

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档