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/