opencv常用编译选项

opencv常用编译选项

打印配置选项

# 打印所有选项
cmake -L
# 打印所有选项和帮助信息
cmake -LH
# 打印所有选项,包括高级
cmake-LA

1. 构建Debug版本或Release版本

-DCMAKE_BUILD_TYPE=Debug
-DCMAKE_BUILD_TYPE=Release

2. 关闭 测试、示例和应用程序的构建

-DBUILD_TESTS=OFF 
-DBUILD_PERF_TESTS=OFF 
-DBUILD_EXAMPLES=OFF 
-DBUILD_opencv_apps=OFF 

3.构建有限的模块集

每个模块都是该modules目录的一个子目录。可以禁用一个模块:

-DBUILD_opencv_calib3d=OFF

相反的选项是只构建指定的模块和它们依赖的所有模块:

-DBUILD_LIST=calib3d,videoio,ts

在此示例中,我们请求了 3 个模块,配置脚本已自动确定所有依赖项:

--OpenCV modules:
--To be built:      calib3d core features2d flann highgui imgcodecs imgproc ts videoio

4. 配置代理

配置脚本可以尝试从互联网上下载额外的库和文件,如果失败,相应的功能将被关闭。可以配置代理帮助下载成功。

export http_proxy=代理主机:端口
export https_proxy=代理主机:端口

5. CPU优化级别

在 x86_64 机器上,库将默认编译为 SSE3 指令集级别。此级别可以通过配置选项更改:

-DCPU_BASELINE=AVX,AVX2

6. CUDA支持

默认:关闭

-DWITH_CUDA=ON 

7. OpenCL 支持

默认:开启

-DWITH_OPENCL=OFF

8. 图片读写(imgcodecs模块)

opencv自己支持的格式:

BMP
HDR (WITH_IMGCODEC_HDR)
Sun Raster (WITH_IMGCODEC_SUNRASTER)
PPM, PGM, PBM, PFM (WITH_IMGCODEC_PXM, WITH_IMGCODEC_PFM)

PNG, JPEG, TIFF, WEBP 格式:

Formats Option Default Force build own
PNG WITH_PNG ON BUILD_PNG
JPEG WITH_JPEG ON BUILD_JPEG
TIFF WITH_TIFF ON BUILD_TIFF
WEBP WITH_WEBP ON BUILD_WEBP
JPEG2000 with OpenJPEG WITH_OPENJPEG ON BUILD_OPENJPEG
JPEG2000 with JasPer WITH_JASPER ON (OpenJPEG关闭才生效) BUILD_JASPER
EXR WITH_OPENEXR ON BUILD_OPENEXR

OpenJPEG比已弃用的JasPer具有更高的优先级。如果要使用 JasPer,则必须禁用 OpenJPEG。

只保留常用的格式并使用自己构建的库

-DWITH_TIFF=OFF -DWITH_WEBP=OFF -DWITH_OPENJPEG=OFF -DWITH_JASPER=OFF -DWITH_OPENEXR=OFF -DBUILD_PNG=ON -DBUILD_JPEG=ON

9. 视频读写(videoio模块)

Video4Linux

WITH_V4L (Linux; default: ON )

FFmpeg

WITH_FFMPEG (default: ON)

10. 并行处理

一些 OpenCV 算法可以使用多线程来加速处理。OpenCV 可以使用其中一种线程后端构建。

线程池:基于pthreads库的默认后端在 Linux、Android 和其他类 Unix 平台上可用。线程池在OpenCV中实现,可以通过环境变量进行控制OPENCV_THREAD_POOL_*。
默认:开启

WITH_PTHREADS_PF

TBB:Threading Building Blocks是一个用于并行编程的跨平台库。
OpenCV 可以从 GitHub 下载和构建 TBB 库,这个功能可以通过BUILD_TBB选项启用。
默认:关闭

WITH_TBB

OpenMP:OpenMP API 依赖于编译器支持,多线程并行处理。
默认:关闭

WITH_OPENMP

HPX:高性能 ParallelX是一个更适合多处理器环境的实验性后端。
默认:关闭

WITH_HPX

11. OpenGL

默认:关闭

WITH_OPENGL

OpenGL 集成可用于绘制具有以下后端的硬件加速窗口:GTK、WIN32 和 Qt。并启用与 OpenGL 的基本互操作性。

12. 深度学习神经网络推理后端和选项(dnn 模块)

选项 默认 描述
WITH_PROTOBUF ON 启用protobuf库搜索。OpenCV 可以构建自己的库副本或使用外部库。dnn模块需要此依赖项,如果找不到,模块将被禁用。
BUILD_PROTOBUF ON 构建自己的protobuf副本。如果要使用外部库,则必须禁用。
PROTOBUF_UPDATE_FILES OFF 重新生成所有 .proto 文件。必须安装与使用的protobuf版本兼容的protoc编译器。
OPENCV_DNN_OPENCL ON 启用内置 OpenCL 推理后端。
WITH_INF_ENGINE OFF 自 OpenVINO 2022.1 起已弃用启用英特尔推理引擎 (IE)后端。允许以 IE 格式 (.xml + .bin) 执行网络。推理引擎必须作为OpenVINO 工具包的一部分安装,或者作为从源构建的独立库安装。
INF_ENGINE_RELEASE 2020040000 自 OpenVINO 2022.1 起已弃用定义与 OpenVINO 工具套件版本相关的推理引擎库版本。必须是 10 位数字的字符串,例如2020040000对于 OpenVINO 2020.4。
WITH_NGRAPH OFF 自 OpenVINO 2022.1 起已弃用启用英特尔 NGraph 库支持。该库是推理引擎后端的一部分,它允许执行从 OpenCV 支持的多种格式的文件中读取的任意网络:Caffe、TensorFlow、PyTorch、Darknet 等。必须安装 NGraph 库,它包含在推理引擎中。
WITH_OPENVINO OFF 启用英特尔 OpenVINO 工具套件支持。应该用于 OpenVINO>=2022.1 而不是WITH_INF_ENGINEand WITH_NGRAPH。
OPENCV_DNN_CUDA OFF 启用 CUDA 后端。必须安装CUDA、 CUBLAS 和CUDNN 。
WITH_HALIDE OFF 使用实验性Halide后端,它可以在运行时为 dnn 层生成优化代码。必须安装卤化物。
WITH_VULKAN OFF 启用实验性Vulkan后端。不需要额外的依赖项,但可以使用外部 Vulkan 标头 ( VULKAN_INCLUDE_DIRS)。
WITH_TENGINE OFF 为 ARM CPU启用实验性Tengine后端。必须安装 Tengine 库。

13. 示例:

cmake   -DCMAKE_BUILD_TYPE=Release      \ 
        -DOPENCV_EXTRA_MODULES_PATH=/liangbaikai/opencv_contrib-4.6.0/modules/  \ 
        -DCMAKE_INSTALL_PREFIX=/liangbaikai/install/ \ 
        -DWITH_CUDA=ON                  \ 
        -DOPENCV_DNN_CUDA=ON            \
        -DCUDA_CUDA_LIBRARY=/usr/local/cuda-10.0/lib64/stubs/libcuda.so  \ 
        -DBUILD_opencv_world=ON         \ 
        -DBUILD_JPEG=ON                 \ 
        -DBUILD_PNG=ON                  \ 
        -DWITH_TBB=ON                   \ 
        -DBUILD_TBB=ON                  \
        -DWITH_OPENMP=ON                \
        -DBUILD_SHARED_LIBS=ON          \ 
        -DWITH_OPENCL=OFF               \ 
        -DBUILD_TESTS=OFF               \
        -DBUILD_PERF_TESTS=OFF          \
        -DBUILD_EXAMPLES=OFF            \
        -DBUILD_opencv_apps=OFF         \
        -DWITH_FFMPEG:BOOL=OFF          \ 
        -DBUILD_opencv_videoio=OFF  ..
cmake -DCMAKE_BUILD_TYPE=Release -DOPENCV_EXTRA_MODULES_PATH=/liangbaikai/opencv_contrib-4.6.0/modules/ -DCMAKE_INSTALL_PREFIX=/liangbaikai/install/ -DWITH_CUDA=ON     -DOPENCV_DNN_CUDA=ON  -DCUDA_CUDA_LIBRARY=/usr/local/cuda-10.0/lib64/stubs/libcuda.so  -DBUILD_opencv_world=ON -DBUILD_JPEG=ON  -DBUILD_PNG=ON -DWITH_TBB=ON -DBUILD_TBB=ON -DWITH_OPENMP=ON -DBUILD_SHARED_LIBS=ON  -DWITH_OPENCL=OFF -DBUILD_TESTS=OFF -DBUILD_PERF_TESTS=OFF -DBUILD_EXAMPLES=OFF -DBUILD_opencv_apps=OFF -DWITH_FFMPEG:BOOL=OFF -DBUILD_opencv_videoio=OFF  ..

猜你喜欢

转载自blog.csdn.net/liang_baikai/article/details/128317988