opencv in android - nonelittlesong/study-opencv GitHub Wiki

abstracts:
学习安卓调用opencv
references:

旋转90度

canvas.rotate(90, 0, 0);
float scale= canvas.getWidth() / (float)mCacheBitmap.getHeight();
float scale2= canvas.getHeight() / (float)mCacheBitmap.getWidth();
if(scale2> scale){
    scale = scale2;
}
if (scale!= 0) {
    canvas.scale(scale,scale,0,0);
}
canvas.drawBitmap(mCacheBitmap, 0, -mCacheBitmap.getHeight(), null);

opencv配置

CmakeLists.txt

set(CMAKE_VERBOSE_MAKEFILE on)
# OPENCV_LIB
set(OPENCV_LIB "/add/your/path/OpenCV-android-sdk/sdk/native/libs")

# 头文件
include_directories(/add/your/path/OpenCV-android-sdk/sdk/native/jni/include)

add_library(libopencv SHARED IMPORTED)
set_target_properties(libopencv
                      PROPERTIES IMPORTED_LOCATION
                      "${OPENCV_LIB}/${ANDROID_ABI}/libopencv_java.so")

add_library(native-lib
            SHARED
            src/main/cpp/native-lib.cpp)

find_library(log-lib
             log)

target_link_libraries(native-lib
                      libopencv
                      android
                      ${log-lib})

native-lib.cpp

#include <jni.h>
#include <opencv2/core/core.hpp>
#include <android/log.h>

Troubleshotting

1. 在使用android studio编译opencv的静态库时,无法引用stl库
新版的android studio默认使用c++_static
而opencv使用的是gnustl_static
因此要build.gradle要配置如下参数
arguments "-DANDROID_STL=gnustl_static"
详情翻墙参考android ndk 指南

⚠️ **GitHub.com Fallback** ⚠️