OpenCV编译全解析

    技术2023-05-23  74

    some examples

    with cuda & python3 bind cmake \ -D CMAKE_BUILD_TYPE=RELEASE \ -D BUILD_EXAMPLES=OFF \ -D BUILD_opencv_apps=OFF \ -D BUILD_DOCS=OFF \ -D BUILD_PERF_TESTS=OFF \ -D BUILD_TESTS=OFF \ -D WITH_CUDA=ON \ -D CUDA_GENERATION=Pascal \ -D ENABLE_FAST_MATH=1 \ -D CUDA_FAST_MATH=1 \ -D WITH_CUBLAS=1 \ -D BUILD_opencv_world=OFF \ -D CMAKE_INSTALL_PREFIX=/home/jimmy/jimmy_insulator_train/opencv-master_lib \ -D BUILD_opencv_python2=OFF \ -D PYTHON_DEFAULT_EXECUTABLE=/home/jimmy/miniconda3/envs/opencv_env/bin/python \ -D PYTHON3_INCLUDE_DIR=/home/jimmy/miniconda3/envs/opencv_env/include/python3.7m \ -D PYTHON3_LIBRARY=/home/jimmy/miniconda3/envs/opencv_env/lib/libpython3.7m.so \ -D PYTHON3_PACKAGES_PATH=/home/jimmy/miniconda3/envs/opencv_env/lib/python3.7/site-packages \ -D PYTHON3_NUMPY_INCLUDE_DIRS=/home/jimmy/miniconda3/envs/opencv_env/lib/python3.7/site-packages/numpy/core/include \ -D BUILD_opencv_python3=ON .. with opencv_contrib & python bind cd opencv-4.1.0 mkdir build && cd build cmake \ -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/opt/opencv-4.1.0 \ -D CMAKE_TOOLCHAIN_FILE=../platforms/linux/arm-gnueabi.toolchain.cmake \ -D OPENCV_EXTRA_MODULES_PATH=~/opencv_all/opencv_contrib-4.1.0/modules \ -D OPENCV_ENABLE_NONFREE=ON \ -D ENABLE_NEON=ON \ -D ENABLE_VFPV3=ON \ -D BUILD_TESTS=OFF \ -D BUILD_DOCS=OFF \ -D PYTHON2_INCLUDE_PATH=/usr/include/python2.7 \ -D PYTHON2_LIBRARIES=/usr/lib/arm-linux-gnueabihf/libpython2.7.so \ -D PYTHON2_NUMPY_INCLUDE_DIRS=/usr/lib/python2/dist-packages/numpy/core/include \ -D PYTHON3_INCLUDE_PATH=/usr/include/python3.7m \ -D PYTHON3_LIBRARIES=/usr/lib/arm-linux-gnueabihf/libpython3.7m.so \ -D PYTHON3_NUMPY_INCLUDE_DIRS=/usr/lib/python3/dist-packages/numpy/core/include \ -D BUILD_OPENCV_PYTHON2=ON \ -D BUILD_OPENCV_PYTHON3=ON \ -D BUILD_EXAMPLES=OFF .. cross compile for android env without some unused modules export ANDROID_STANDALONE_TOOLCHAIN=/home/jimmy/jimmy_insulator_train/android_compile_dev/android-21-toolchain cmake \ -D CMAKE_TOOLCHAIN_FILE=../platforms/android/android.toolchain.cmake \ -D ANDROID_STL=gnustl_shared \ -D ANDROID_NATIVE_API_LEVEL=21 \ -D CMAKE_BUILD_TYPE=RELEASE \ -D BUILD_TESTS=OFF \ -D BUILD_DOCS=OFF \ -D BUILD_EXAMPLES=OFF \ -D ENABLE_NEON=ON \ -D ENABLE_VFPV3=ON \ -D BUILD_OPENCV_PYTHON2=OFF \ -D BUILD_OPENCV_PYTHON3=OFF \ -D BUILD_ANDROID_EXAMPLES=OFF \ -D BUILD_JAVA=OFF \ -D BUILD_SHARED_LIBS=ON \ -D WITH_ITT=OFF \ -D WITH_OPENCL=ON \ -D BUILD_opencv_calib3d=OFF \ -D BUILD_opencv_flann=OFF \ -D BUILD_opencv_ml=OFF \ -D BUILD_opencv_photo=OFF \ -D BUILD_opencv_stitching=OFF \ -D BUILD_opencv_video=OFF \ -D BUILD_opencv_videostab=OFF \ -D BUILD_opencv_videoio=OFF \ -D BUILD_opencv_shape=OFF \ -D BUILD_opencv_objdetect=OFF \ -D BUILD_opencv_features2d=OFF \ -D BUILD_opencv_highgui=OFF \ -D BUILD_opencv_superres=OFF ..

    CUDA

    Compliling OpenCV with cuda use these macro below:

    -D WITH_CUDA=ON \ -D CUDA_GENERATION=Pascal \ -D ENABLE_FAST_MATH=1 \ -D CUDA_FAST_MATH=1 \ -D WITH_CUBLAS=1 \

    “CUDA_GENERATION” is the arch of your GPU and it’s name can be found on NVIDIA’s web site.

    OpenCL

    Compliling OpenCV with OpenCL use these macro below:

    -D WITH_OPENCL=ON \

    By default,Opencv use head files in “3rdparty/include/opencl/1.2”.If you want use your own lib,you should add more macros like this:

    -D WITH_OPENCL=OFF -D HAVE_OPENCL_STATIC=ON -D OPENCL_LIBRARIES=/usr/lib/aarch64-linux-gnu/libmali.so -D OPENCL_INCLUDE_DIRS=/usr/include/CL

    FFMPEG

    VideoIo module need ffmpeg to capture video stream.Compliling OpenCV with ffmpeg use these macro below:

    -D WITH_FFMPEG=ON \

    CMake uses Pkgconfig tool to find FFMPEG libraries and headers. The best way in your case to create pc file for your cross compiled FFMPEG and place it in pkgconfig folder of your cross compile environment.

    You can try this export PKG_CONFIG_PATH=“the path contains your pc file for ffmpeg”.

    opencv_contrib

    Compliling OpenCV with opencv_contrib use these macro below:

    -DOPENCV_EXTRA_MODULES_PATH=<opencv_contrib>/modules

    Soucre code can be downed from opencv_contrib.

    python bind

    Compliling OpenCV with python bind use these macro below:

    -D PYTHON_DEFAULT_EXECUTABLE=/home/jimmy/miniconda3/envs/opencv_env/bin/python \ -D PYTHON3_INCLUDE_DIR=/home/jimmy/miniconda3/envs/opencv_env/include/python3.7m \ -D PYTHON3_LIBRARY=/home/jimmy/miniconda3/envs/opencv_env/lib/libpython3.7m.so \ -D PYTHON3_PACKAGES_PATH=/home/jimmy/miniconda3/envs/opencv_env/lib/python3.7/site-packages \ -D PYTHON3_NUMPY_INCLUDE_DIRS=/home/jimmy/miniconda3/envs/opencv_env/lib/python3.7/site-packages/numpy/core/include \

    cross compile

    arm-linux

    Compliling OpenCV for arm-linux use these macro below:

    -D CMAKE_TOOLCHAIN_FILE=../platforms/linux/arm-gnueabi.toolchain.cmake \

    android

    Compliling OpenCV for android use these macro below:

    export ANDROID_STANDALONE_TOOLCHAIN=/home/jimmy/jimmy_insulator_train/android_compile_dev/android-21-toolchain -D CMAKE_TOOLCHAIN_FILE=../platforms/android/android.toolchain.cmake

    One must export ANDROID_STANDALONE_TOOLCHAIN enviroment variable,otherwise the compile system can not find toolchains during make process.

    some usefull site

    opencv.orghttps://docs.opencv.org/https://answers.opencv.org/https://www.learnopencv.com/https://www.pyimagesearch.com/
    Processed: 0.016, SQL: 9