OpenCV5 C++ 解决图片写中文乱码问题 (Android JNI)

Step1: Github 下载 opencv 5

git clone --single-branch -b 5.x https://github.com/opencv/opencv.git

Step2: 在 OpenCV 目录下创建 cmake 选项文件 options.txt

-DBUILD_ZLIB=OFF
-DBUILD_TIFF=OFF
-DBUILD_OPENJPEG=OFF
-DBUILD_JASPER=OFF
-DBUILD_JPEG=OFF
-DBUILD_PNG=OFF
-DBUILD_OPENEXR=OFF
-DBUILD_WEBP=OFF
-DBUILD_TBB=OFF
-DBUILD_IPP_IW=OFF
-DBUILD_ITT=OFF
-DWITH_AVFOUNDATION=OFF
-DWITH_CAP_IOS=OFF
-DWITH_CAROTENE=OFF
-DWITH_CPUFEATURES=ON
-DWITH_EIGEN=OFF
-DWITH_FFMPEG=OFF
-DWITH_GSTREAMER=OFF
-DWITH_GTK=OFF
-DWITH_IPP=OFF
-DWITH_HALIDE=OFF
-DWITH_VULKAN=OFF
-DWITH_INF_ENGINE=OFF
-DWITH_NGRAPH=OFF
-DWITH_JASPER=OFF
-DWITH_OPENJPEG=OFF
-DWITH_JPEG=OFF
-DWITH_WEBP=OFF
-DWITH_OPENEXR=OFF
-DWITH_PNG=OFF
-DWITH_TIFF=OFF
-DWITH_OPENVX=OFF
-DWITH_GDCM=OFF
-DWITH_TBB=OFF
-DWITH_HPX=OFF
-DWITH_OPENMP=ON
-DWITH_PTHREADS_PF=OFF
-DWITH_V4L=OFF
-DWITH_CLP=OFF
-DWITH_OPENCL=OFF
-DWITH_OPENCL_SVM=OFF
-DWITH_VA=OFF
-DWITH_VA_INTEL=OFF
-DWITH_ITT=OFF
-DWITH_PROTOBUF=OFF
-DWITH_IMGCODEC_HDR=OFF
-DWITH_IMGCODEC_SUNRASTER=OFF
-DWITH_IMGCODEC_PXM=OFF
-DWITH_IMGCODEC_PFM=OFF
-DWITH_QUIRC=OFF
-DWITH_ANDROID_MEDIANDK=ON
-DWITH_TENGINE=OFF
-DWITH_ONNX=OFF
-DWITH_TIMVX=OFF
-DWITH_OBSENSOR=OFF
-DWITH_CANN=OFF
-DWITH_FLATBUFFERS=OFF
-DBUILD_SHARED_LIBS=OFF
-DBUILD_opencv_apps=OFF
-DBUILD_ANDROID_PROJECTS=OFF
-DBUILD_ANDROID_EXAMPLES=OFF
-DBUILD_DOCS=OFF
-DBUILD_EXAMPLES=OFF
-DBUILD_PACKAGE=OFF
-DBUILD_PERF_TESTS=OFF
-DBUILD_TESTS=OFF
-DBUILD_WITH_STATIC_CRT=OFF
-DBUILD_FAT_JAVA_LIB=OFF
-DBUILD_ANDROID_SERVICE=OFF
-DBUILD_JAVA=OFF
-DBUILD_OBJC=OFF
-DBUILD_KOTLIN_EXTENSIONS=OFF
-DENABLE_PRECOMPILED_HEADERS=OFF
-DENABLE_FAST_MATH=ON
-DCV_TRACE=OFF
-DBUILD_opencv_java=OFF
-DBUILD_opencv_gapi=OFF
-DBUILD_opencv_objc=OFF
-DBUILD_opencv_js=OFF
-DBUILD_opencv_ts=OFF
-DBUILD_opencv_python2=OFF
-DBUILD_opencv_python3=OFF
-DBUILD_opencv_dnn=OFF
-DBUILD_opencv_imgcodecs=ON
-DBUILD_opencv_videoio=ON
-DBUILD_opencv_calib3d=OFF
-DBUILD_opencv_flann=OFF
-DBUILD_opencv_objdetect=OFF
-DBUILD_opencv_stitching=OFF
-DBUILD_opencv_ml=OFF

Step3: 编译安装 opencv5

注意:确保终端开启外网模式,能够正常下载字体

export ANDROID_SDK="/Users/wrj/Library/Android/sdk"
export PATH="${ANDROID_SDK}/cmake/3.22.1/bin:${PATH}"
export ANDROID_NDK="${ANDROID_SDK}/ndk/25.2.9519653"
export ANDROID_ABI="arm64-v8a"
export INSTALL_DIR="/Users/wrj/AndroidStudioProjects/fit_app/common/opencv"
 
if [ ! -d "build" ]; then 
    mkdir build;
fi

cd build

cmake -G "Unix Makefiles" \
-DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK}/build/cmake/android.toolchain.cmake \
-DCMAKE_MAKE_PROGRAM="${ANDROID_NDK}/prebuilt/darwin-x86_64/bin/make" \
-DCMAKE_BUILD_TYPE=Release \
-DANDROID_ABI=${ANDROID_ABI} \
-DANDROID_NDK=${ANDROID_NDK} \
-DANDROID_PLATFORM=android-24 \
-DCMAKE_INSTALL_PREFIX=${INSTALL_DIR} \
`cat ../options.txt` ..

cmake --build . --target install -- -j8
cd ..

Step4: 编译 ade

cd build/3rdparty/ade/ade-0.1.2d
mkdir -p build
cd build

cmake -G "Unix Makefiles" \
-DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK}/build/cmake/android.toolchain.cmake \
-DCMAKE_MAKE_PROGRAM="${ANDROID_NDK}/prebuilt/darwin-x86_64/bin/make" \
-DCMAKE_BUILD_TYPE=Release \
-DANDROID_ABI=${ANDROID_ABI} \
-DANDROID_NDK=${ANDROID_NDK} \
-DANDROID_PLATFORM=android-24 ..

cmake --build . --target install

libade.a 库放到 opencv/sdk/native/3rdparty/libs/arm64-v8a 目录下

posted @ 2024-06-07 15:14  RenjieW  阅读(55)  评论(0)    收藏  举报