第一步:先到openCV官网现在所需的openCV的版本库;地址:https://opencv.org/,选择相应的Android版本进行下载
第二步,在AndoridStudio中新建一个有C++库的Android项目,并在main下新建jniLibs的目录,把openCV-android-sdk/native/libs目录下的文件copy到新建的jniLibs目录中,在app下的build.gradle中defaultConfig中添加
ndk{
abiFilters 'armeabi-v7a','arm64-v8a'
}
并在Android标签下添加
sourSets{
main{
jni.srcDirs=['src/main/cpp']
jniLibs.srcDirs=['src/main/jniLibs']
}
}
第三步,把openCV-android-sdk/native/jni/目录下的include目录copy到项目中的libs目录下,然后修改cpp目录下的CMakeLists.txt文件
在里面添加
include_directories(../../../libs/opencv_include)
add_library( lib_opencv SHARED IMPORTED )
set_target_properties(lib_opencv PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/../jniLibs/${ANDROID_ABI}/libopencv_java4.so)
其中注意 PROPERTIES IMPORTED_LOCATION 后面是添加的项目的相对地址
在target_link_libraries标签内添加lib_opencv,具体如下:
target_link_libraries( # Specifies the target library.
native-lib
lib_opencv//这里的名字是add_library中的lib_opencv保持一致
# Links the target library to the log library
# included in the NDK.
${log-lib} )
第四步:把openCV-android-simples目录下的face-detection目录中的res中的raw目录copy到项目的res目录下,这个是人脸识别的模型对比文件,然后把src中的DetectionBasedTracker和FdActivity copy 到项目目录中
第五步,在cpp目录中新建一个C++类,命名为DetectionBasedTracker_jni,然后修改CMakeLists.txt文件
add_library( # Sets the name of the library.
native-lib
# Sets the library as a shared library.
SHARED
# Provides a relative path to your source file(s).
DetectionBasedTracker_jni.cpp //这里之前是native-lib.cpp修改为当前新建的cpp文件
)
第六步:把openCV-android/simples/face-detection/jni目录下的DectectionBaseTracker_jni.cpp和.h文件中的方法copy到项目中新建的DetectionBasedTracker_jni文件中,如果不想修改里面内容,需在项目中新建org.opencv.samples.facedetect包,把DetectionBasedTracker和FdActivity放到里面,并把FdActivity作为启动页,修改FdActivity中的BaseLoaderCallback监听内的System.loadLibrary("native-lib")
第七步:在AndroidManifest.xml文件中添加:
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<supports-screens android:resizeable="true"
android:smallScreens="true"
android:normalScreens="true"
android:largeScreens="true"
android:anyDensity="true" />
<uses-feature android:name="android.hardware.camera" android:required="false"/>
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/>
<uses-feature android:name="android.hardware.camera.front" android:required="false"/>
<uses-feature android:name="android.hardware.camera.front.autofocus" android:required="false"/>
第八步:将openCV-android/sdk/java复制粘贴到项目目录下以第三方库的形式引入,因为是eclipse项目,引用时AndroidStudio会自动生成gradle,把build.gradle中apply plugin:'com.android.library',并删除defaultConfig中的applicationId即可编译通过,
openCV提供的人脸识别默认采用的是后置摄像头,可以在onCreate方法中设置如下代码,即可实现前置摄像头的使用,当为0是即为后置摄像头
mOpenCvCameraView.setCameraIndex(1);
mOpenCvCameraView.enableView();
集成完成后,如需其他功能可根据openCV提供的api文档进行添加使用。