README.md

    opencv-mobile

    License build download

    Android iOS ARM Linux Windows Ubuntu MacOS Firefox Chrome

    This project provides the minimal build of opencv library for the Android, iOS and ARM Linux platforms.

    Packages for Windows, Linux, MacOS and WebAssembly are available now.

    We provide prebuild binary packages for opencv 2.4.13.7, 3.4.20 and 4.8.0.

    We also provide prebuild binary package for iOS/iOS-Simulator with bitcode enabled, that the official package lacks.

    We also provide prebuild binary package for Mac-Catalyst and Apple xcframework, that the official package lacks.

    All the binaries are compiled from source on github action, no virus, no backdoor, no secret code.

    opencv 4.8.0 android package size
    The official opencv 189 MB
    opencv-mobile 17.7 MB
    opencv 4.8.0 ios package size package size with bitcode
    The official opencv 197 MB missing :(
    opencv-mobile 9.88 MB 34 MB

    Download

    https://github.com/nihui/opencv-mobile/releases/latest

    Platform Arch opencv-2.4.13.7 opencv-3.4.20 opencv-4.8.0
    Android armeabi-v7a
    arm64-v8a
    x86
    x86_64
    download-icon download-icon download-icon
    iOS armv7
    arm64
    arm64e
    download-icon
    bitcode-icon
    download-icon
    bitcode-icon
    download-icon
    bitcode-icon
    iOS-Simulator i386
    x86_64
    arm64
    download-icon
    bitcode-icon
    download-icon
    bitcode-icon
    download-icon
    bitcode-icon
    MacOS x86_64
    arm64
    download-icon download-icon download-icon
    Mac-Catalyst x86_64
    arm64
    download-icon
    bitcode-icon
    download-icon
    bitcode-icon
    download-icon
    bitcode-icon
    Apple
    xcframework
    ios
    (armv7,arm64,arm64e)
    ios-simulator
    (i386,x86_64,arm64)
    ios-maccatalyst
    (x86_64,arm64)
    macos
    (x86_64,arm64)
    download-icon
    bitcode-icon
    download-icon
    bitcode-icon
    download-icon
    bitcode-icon
    ARM-Linux arm-linux-gnueabi
    arm-linux-gnueabihf
    aarch64-linux-gnu
    download-icon download-icon download-icon
    Windows-VS2015 x86
    x64
    download-icon download-icon download-icon
    Windows-VS2017 x86
    x64
    download-icon download-icon download-icon
    Windows-VS2019 x86
    x64
    download-icon download-icon download-icon
    Windows-VS2022 x86
    x64
    download-icon download-icon download-icon
    Ubuntu-20.04 x86_64 download-icon download-icon download-icon
    Ubuntu-22.04 x86_64 download-icon download-icon download-icon
    WebAssembly basic
    simd
    threads
    simd+threads
    download-icon download-icon download-icon
    • Android package build with ndk r25c and android api 24
    • iOS / iOS-Simulator / MacOS / Mac-Catalyst package build with Xcode 13.4.1
    • ARM Linux package build with cross-compiler on Ubuntu-22.04
    • WebAssembly package build with Emscripten 3.1.28

    Usage Android

    1. Extract archive to <project dir>/app/src/main/jni/
    2. Modify <project dir>/app/src/main/jni/CMakeListst.txt to find and link opencv
    set(OpenCV_DIR ${CMAKE_SOURCE_DIR}/opencv-mobile-4.8.0-android/sdk/native/jni)
    find_package(OpenCV REQUIRED)
    
    target_link_libraries(your_jni_target ${OpenCV_LIBS})

    Usage iOS and MacOS

    1. Extract archive, and drag opencv2.framework or opencv2.xcframework into your project

    Usage ARM Linux, Windows, Linux, WebAssembly

    1. Extract archive to <project dir>/
    2. Modify <project dir>/CMakeListst.txt to find and link opencv
    3. Pass -DOpenCV_STATIC=ON to cmake option for windows build
    set(OpenCV_DIR ${CMAKE_SOURCE_DIR}/opencv-mobile-4.8.0-armlinux/arm-linux-gnueabihf/lib/cmake/opencv4)
    find_package(OpenCV REQUIRED)
    
    target_link_libraries(your_target ${OpenCV_LIBS})

    How-to-build your custom package

    step 1. download opencv source

    wget -q https://github.com/opencv/opencv/archive/4.8.0.zip -O opencv-4.8.0.zip
    unzip -q opencv-4.8.0.zip
    cd opencv-4.8.0

    step 2. strip zlib dependency and use stb-based highgui implementation (optional)

    patch -p1 -i ../opencv-4.8.0-no-zlib.patch
    truncate -s 0 cmake/OpenCVFindLibsGrfmt.cmake
    rm -rf modules/gapi
    rm -rf modules/highgui
    cp -r ../highgui modules/

    step 3. patch opencv source for no-rtti build (optional)

    patch -p1 -i ../opencv-4.8.0-no-rtti.patch

    step 4. apply your opencv options to opencv4_cmake_options.txt

    step 5. build your opencv package with cmake

    mkdir -p build
    cd build
    cmake -DCMAKE_INSTALL_PREFIX=install \
    -DCMAKE_BUILD_TYPE=Release \
    `cat ../../opencv4_cmake_options.txt` \
    -DBUILD_opencv_world=OFF ..

    step 6. make a package

    zip -r -9 opencv-mobile-4.8.0.zip install

    Some notes

    • The minimal opencv build contains most basic opencv operators and common image processing functions, with some handy additions like keypoint feature extraction and matching, image inpainting and opticalflow estimation.

    • Many computer vision algorithms that reside in dedicated modules are discarded, such as face detection etc. You could try deep-learning based algorithms with neural network inference library optimized for mobile.

    • Image IO functions in highgui module, like cv::imread and cv::imwrite, are re-implemented using stb for smaller code size. GUI functions, like cv::imshow, are discarded.

    • cuda and opencl are disabled because there is no cuda on mobile, no opencl on ios, and opencl on android is slow. opencv on gpu is not suitable for real productions. Write metal on ios and opengles/vulkan on android if you need good gpu acceleration.

    • C++ RTTI and exceptions are disabled for minimal build on mobile platforms and webassembly build. Be careful when you write cv::Mat roi = image(roirect); :P

    opencv modules included

    module comment
    opencv_core Mat, matrix operations, etc
    opencv_imgproc resize, cvtColor, warpAffine, etc
    opencv_highgui imread, imwrite
    opencv_features2d keypoint feature and matcher, etc (not included in opencv 2.x package)
    opencv_photo inpaint, etc
    opencv_video opticalflow, etc

    opencv modules discarded

    module comment
    opencv_androidcamera use android Camera api instead
    opencv_calib3d camera calibration, rare uses on mobile
    opencv_contrib experimental functions, build part of the source externally if you need
    opencv_dnn very slow on mobile, try ncnn for neural network inference on mobile
    opencv_dynamicuda no cuda on mobile
    opencv_flann feature matching, rare uses on mobile, build the source externally if you need
    opencv_gapi graph based image processing, little gain on mobile
    opencv_gpu no cuda/opencl on mobile
    opencv_imgcodecs link with opencv_highgui instead
    opencv_java wrap your c++ code with jni
    opencv_js write native code on mobile
    opencv_legacy various good-old cv routines, build part of the source externally if you need
    opencv_ml train your ML algorithm on powerful pc or server
    opencv_nonfree the SIFT and SURF, use ORB which is faster and better
    opencv_objdetect HOG, cascade detector, use deep learning detector which is faster and better
    opencv_ocl no opencl on mobile
    opencv_python no python on mobile
    opencv_shape shape matching, rare uses on mobile, build the source externally if you need
    opencv_stitching image stitching, rare uses on mobile, build the source externally if you need
    opencv_superres do video super-resolution on powerful pc or server
    opencv_ts test modules, useless in production anyway
    opencv_videoio use android MediaCodec or ios AVFoundation api instead
    opencv_videostab do video stablization on powerful pc or server
    opencv_viz vtk is not available on mobile, write your own data visualization routines

    项目简介

    当前项目暂无项目简介

    发行版本 17

    Release v17

    全部发行版

    贡献者 5

    开发语言

    • C 79.4 %
    • CMake 11.6 %
    • C++ 9.0 %