OpenCV编译全解析

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.org
  • https://docs.opencv.org/
  • https://answers.opencv.org/
  • https://www.learnopencv.com/
  • https://www.pyimagesearch.com/
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值