如何在Mac下配置Android.mk创建带有OpenCV的安卓可执行Demo

前言

本篇博客旨在通过几部简单的Android.mk配置,实现一个可以在Android手机平台直接调用OpenCV的可执行程序demo。
该demo已上传至我的github:https://github.com/PotterSu/OpenCV_AndroidDemo

下载OpenCV

首先我们去OpenCV官网https://opencv.org/releases/,下载Android版本如下图所示,并解压到某个路径:
在这里插入图片描述

配置Android.mk

下载好OpenCV Android库后,我们就可以开始配置Android.mk了。
1.首先我们需要加载OpenCV库。这里我们加载的是OpenCV的静态库
OPENCV_INSTALL_MODULES:=on
OPENCV_CAMERA_MODULES:=off
OPENCV_LIB_TYPE:=STATIC
ifeq ("$(wildcard $(OPENCV_MK_PATH))","")
include /Users/subowen/WorkDir/SDKDir/OpenCV-android-sdk/sdk/native/jni/OpenCV.mk
else
include $(OPENCV_MK_PATH)
endif
这几句话放入你的Android.mk中,OpenCV库就已经加载完毕了。
2.当然我们还需要加载头文件的路径。
LOCAL_C_INCLUDES += /Users/subowen/WorkDir/SDKDir/OpenCV-android-sdk/sdk/native/jni/include \
注意,这里的路径要换成你刚刚下载并解压好的OpenCV路径,/your/path/to/OpenCV-android-sdk/sdk/native/jni/
3.至此,OpenCV的关联已经全部结束了,接下来就按照你自己的需求配置Android.mk的选项以及其他需要的cpp文件即可。
我提供的demo中的完整Android.mk如下:

LOCAL_PATH:= $(call my-dir)

$(info, $(LOCAL_PATH))

# ======================================
# 加载libOpenCV
# ======================================
OPENCV_INSTALL_MODULES:=on
OPENCV_CAMERA_MODULES:=off
OPENCV_LIB_TYPE:=STATIC
ifeq ("$(wildcard $(OPENCV_MK_PATH))","")
	include /Users/subowen/WorkDir/SDKDir/OpenCV-android-sdk/sdk/native/jni/OpenCV.mk
else
	include $(OPENCV_MK_PATH)
endif

#include $(CLEAR_VARS)
LOCAL_MODULE := libOpenCVTest
LOCAL_MODULE_TAGS := OpenCVTest
LOCAL_CFLAGS += -DANDROID

LOCAL_C_INCLUDES += /Users/subowen/WorkDir/SDKDir/OpenCV-android-sdk/sdk/native/jni/include \

LOCAL_SRC_FILES += $(LOCAL_PATH)/../../demo/testOpenCV.cpp

LOCAL_CFLAGS += -fPIC -pie -fPIE -Wno-deprecated-declarations
LOCAL_LDLIBS += -lz -ldl -llog -fPIE -pie
LOCAL_LDLIBS += -llog -landroid -lEGL -lGLESv2
include $(BUILD_EXECUTABLE)

Application.mk如下:

# NDK_TOOLCHAIN_VERSION := 4.9
NDK_TOOLCHAIN_VERSION := clang
APP_CPPFLAGS := -frtti -std=c++0x -fexceptions
APP_STL := c++_shared
# gnustl_shared
# APP_ABI := armeabi-v7a arm64-v8a
APP_ABI := armeabi-v7a
APP_PLATFORM := android-21

这里根据你的实际情况修改自己的安卓平台以及APP_STL等即可。

NDK关联Android.mk和Application.mk

1.配置完两个.mk文件后,接下来就可以编译demo了,一句话搞定:
ndk-build NDK_PROJECT_PATH=./ NDK_APPLICATION_MK:=Application.mk APP_BUILD_SCRIPT:=Android.mk
顺利的话会在同级目录下生成libs文件夹,里面会有生成的OpenCVTest可执行文件。
2.万事具备,最后我们就可以找个Android手机在上面跑起我们的OpenCVTest可执行程序了。
依次在Mac终端输入:
adb root
adb remount
adb push ./libs/armeabi-v7a/OpenCVTest /system/bin/
adb shell "LD_LIBRARY_PATH=/vendor/lib/:$LD_LIBRARY_PATH /system/bin/OpenCVTest"
上面都是Adb命令,就是把刚刚我们编译好的可执行程序推到手机的某个路径下名执行这个可执行程序。

如何在提供的github中运行这个demo

在我的github中有上面完整过程的demo,唯一需要修改的就是你的OpenCV路径,需要你自己下载并配置好。
然后在mac终端进入arm_bin_OpenCV文件夹中。
cd /your/path/to/arm_bin_OpenCV
依次执行
sh build.sh
sh run.sh
如果顺利就可以看到运行成功的提示信息啦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值