移动端使用opencv

移动端使用opencv

  • 可以去官网下载移动端的sdk
  • 下载下来,应该是有两个目录:分别是sample和sdk。
  • 我这里使用到的是sdk/native/libs/arm64-v8a/libopencv_java4.so这个动态库。当然,你也可以根据需要,编译你需要的动态库。头文件在/sdk/native/jni/include
  • 之后可以在你的项目cmake文件中设置这两个位置进行链接:
    target_include_directories(${MAIN_EXE_NAME} ${TYPE} ${OPENCV_INCLUDE_DIR})
    target_link_libraries(${MAIN_EXE_NAME} ${TYPE} ${OPENCV_LIB_DIR}/libopencv_java4.so)
    
  • 之后就可以在你的代码里面使用: #include <opencv2/opencv.hpp>
#include <opencv2/opencv.hpp>

int main(int argc, char* argv[]){
    // 读取视频,看是否可读
    cv::VideoCapture cap(InputVideoPath);
    if(!cap.isOpened()){
        return 0;
    }
    // 获取视频信息
    int totalFrame = static_cast<int>(cap.get(cv::CAP_PROP_FRAME_COUNT));
    double fps = cap.get(cv::CAP_PROP_FPS);
    int width = static_cast<int>(cap.get(cv::CAP_PROP_FRAME_WIDTH));
    int height = static_cast<int>(cap.get(cv::CAP_PROP_FRAME_HEIGHT));

    // 写入帧到视频
    cv::VideoWriter OutVideo;
    int fourcc = cv::VideoWriter::fourcc('H', '2', '6', '4');
    OutVideo.open(outputVideoPath, fourcc, fps, cv::Size(width, height));
    if(!OutVideo.isOpened()){
        // 可以根据需要,在增加其他fourcc格式进行判断使用,比如:MJPG等
        return 0;
    }

    cv::Mat frame;
    while(cap.read(frame)){
        if(frame.empty()){
            break;
        }
        //----------根据需要,对frame进行处理----
        // 。。。。。。
        //------------------------------------
        OutVideo.write(frame);
    }
    // 释放
    cap.release();
    OutVideo.release();
}
posted @ 2025-12-30 10:26  九叶草  阅读(6)  评论(0)    收藏  举报