SeetaFace2 编译出的动态库集成到 Android 项目

本文档详细介绍了如何将SeetaFace2编译的动态库集成到Android项目中,包括下载OpenCV for Android,将库文件放入jniLibs目录,配置CMakeLists.txt,以及使用示例代码进行人脸识别和跟踪。通过这个过程,开发者可以实现在Android设备上进行实时的人脸检测、识别和质量评估。
摘要由CSDN通过智能技术生成
SeetaFace2 编译出的动态库集成到 Android 项目

欢迎入群交流

效果图
下载 opencv android

https://opencv.org/releases/

在这里插入图片描述

新建 Android 项目,将 SeetaFace2 编译出的动态库放到 jniLibs 目录下,并在 build.gradle 中指定 jniLibs 库的路径

在这里插入图片描述

将 opencv android 目录下的 lib 库拷贝到 Android jniLibs 目录下

在这里插入图片描述

引入头文件

在这里插入图片描述

CMakeLists.txt 文件

cmake_minimum_required(VERSION 3.4.1)

set(rootPath ${CMAKE_SOURCE_DIR}/../../jniLibs/${CMAKE_ANDROID_ARCH_ABI})
message(${rootPath})

add_library(libSeetaFaceDetector.so SHARED IMPORTED)
set_target_properties(libSeetaFaceDetector.so PROPERTIES IMPORTED_LOCATION ${rootPath}/libSeetaFaceDetector.so)

add_library(libSeetaFaceLandmarker.so SHARED IMPORTED)
set_target_properties(libSeetaFaceLandmarker.so PROPERTIES IMPORTED_LOCATION ${rootPath}/libSeetaFaceLandmarker.so)

add_library(libSeetaFaceRecognizer.so SHARED IMPORTED)
set_target_properties(libSeetaFaceRecognizer.so PROPERTIES IMPORTED_LOCATION ${rootPath}/libSeetaFaceRecognizer.so)

add_library(libSeetaFaceTracker.so SHARED IMPORTED)
set_target_properties(libSeetaFaceTracker.so PROPERTIES IMPORTED_LOCATION ${rootPath}/libSeetaFaceTracker.so)

add_library(libSeetaNet.so SHARED IMPORTED)
set_target_properties(libSeetaNet.so PROPERTIES IMPORTED_LOCATION ${rootPath}/libSeetaNet.so)

add_library(libSeetaQualityAssessor.so SHARED IMPORTED)
set_target_properties(libSeetaQualityAssessor.so PROPERTIES IMPORTED_LOCATION ${rootPath}/libSeetaQualityAssessor.so)

add_library(libopencv_java4.so SHARED IMPORTED)
set_target_properties(libopencv_java4.so PROPERTIES IMPORTED_LOCATION ${rootPath}/libopencv_java4.so)

include_directories(
        include/opencv2
        include/seeta
        include
)

add_library(
        facemark
        SHARED
        face_mark.cpp
        ndk_callback.cpp
)

target_link_libraries(
        facemark
        libSeetaFaceDetector.so
        libSeetaFaceLandmarker.so
        libSeetaFaceRecognizer.so
        libSeetaFaceTracker.so
        libSeetaNet.so
        libSeetaQualityAssessor.so
        libopencv_java4.so
        android
        log)
目录说明:

assets 目录是下载的模型

include 中引入 opencv2 和 seeta 的头文件

demo 参考
extern "C"
JNIEXPORT void JNICALL
Java_vl_test_FaceManager_test(JNIEnv *env, jobject thiz) {
    SDK_LOG_D("picMark");
    seeta::ModelSetting::Device device = seeta::ModelSetting::CPU;
    int id = 0;
    seeta::ModelSetting FD_model("/data/data/vl.test/files/model/fd_2_00.dat",
                                 device, id);
    seeta::FaceTracker FD(FD_model);
    FD.set(seeta::FaceTracker::PROPERTY_VIDEO_STABLE, 1);
    cv::Mat frame = cv::imread("/data/data/vl.test/files/camera/camera1637922203067");
    SDK_LOG_D("frame imread height:%d , width:%d", frame.rows, frame.cols);

    seeta::cv::ImageData simage = frame;
    auto faces = FD.track(simage);
    SDK_LOG_D("faces:%d", faces.size);

    for (int i = 0; i < faces.size; ++i) {
        auto &face = faces.data[i];
        // 坐标值
        cv::rectangle(frame, cv::Rect(face.pos.x, face.pos.y, face.pos.width, face.pos.height),
                      CV_RGB(128, 128, 255), 3);

    }
    std::string filePath = "/data/data/vl.test.app/files/camera/test_temp.jpg";
    cv::imwrite(filePath, frame);
    SDK_LOG_D("frame imwrite height:%d , width:%d", frame.rows, frame.cols);
}

在这里插入图片描述

微信公众号(他晓),关注并转发,谢谢

效果图
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值