opencv常用编译选项

编程入门 行业动态 更新时间:2024-10-04 03:23:17

opencv常用编译<a href=https://www.elefans.com/category/jswz/34/1771211.html style=选项"/>

opencv常用编译选项

opencv常用编译选项

文章目录

  • opencv常用编译选项
    • 打印配置选项
    • 1. 构建Debug版本或Release版本
    • 2. 关闭 测试、示例和应用程序的构建
    • 3.构建有限的模块集
    • 4. 配置代理
    • 5. CPU优化级别
    • 6. CUDA支持
    • 7. OpenCL 支持
    • 8. 图片读写(imgcodecs模块)
    • 9. 视频读写(videoio模块)
    • 10. 并行处理
    • 11. OpenGL
    • 12. 深度学习神经网络推理后端和选项(dnn 模块)
    • 13. 示例:

打印配置选项

# 打印所有选项
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 格式:

FormatsOptionDefaultForce build own
PNGWITH_PNGONBUILD_PNG
JPEGWITH_JPEGONBUILD_JPEG
TIFFWITH_TIFFONBUILD_TIFF
WEBPWITH_WEBPONBUILD_WEBP
JPEG2000 with OpenJPEGWITH_OPENJPEGONBUILD_OPENJPEG
JPEG2000 with JasPerWITH_JASPERON (OpenJPEG关闭才生效)BUILD_JASPER
EXRWITH_OPENEXRONBUILD_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_PROTOBUFON启用protobuf库搜索。OpenCV 可以构建自己的库副本或使用外部库。dnn模块需要此依赖项,如果找不到,模块将被禁用。
BUILD_PROTOBUFON构建自己的protobuf副本。如果要使用外部库,则必须禁用。
PROTOBUF_UPDATE_FILESOFF重新生成所有 .proto 文件。必须安装与使用的protobuf版本兼容的protoc编译器。
OPENCV_DNN_OPENCLON启用内置 OpenCL 推理后端。
WITH_INF_ENGINEOFF自 OpenVINO 2022.1 起已弃用启用英特尔推理引擎 (IE)后端。允许以 IE 格式 (.xml + .bin) 执行网络。推理引擎必须作为OpenVINO 工具包的一部分安装,或者作为从源构建的独立库安装。
INF_ENGINE_RELEASE2020040000自 OpenVINO 2022.1 起已弃用定义与 OpenVINO 工具套件版本相关的推理引擎库版本。必须是 10 位数字的字符串,例如2020040000对于 OpenVINO 2020.4。
WITH_NGRAPHOFF自 OpenVINO 2022.1 起已弃用启用英特尔 NGraph 库支持。该库是推理引擎后端的一部分,它允许执行从 OpenCV 支持的多种格式的文件中读取的任意网络:Caffe、TensorFlow、PyTorch、Darknet 等。必须安装 NGraph 库,它包含在推理引擎中。
WITH_OPENVINOOFF启用英特尔 OpenVINO 工具套件支持。应该用于 OpenVINO>=2022.1 而不是WITH_INF_ENGINEand WITH_NGRAPH。
OPENCV_DNN_CUDAOFF启用 CUDA 后端。必须安装CUDA、 CUBLAS 和CUDNN 。
WITH_HALIDEOFF使用实验性Halide后端,它可以在运行时为 dnn 层生成优化代码。必须安装卤化物。
WITH_VULKANOFF启用实验性Vulkan后端。不需要额外的依赖项,但可以使用外部 Vulkan 标头 ( VULKAN_INCLUDE_DIRS)。
WITH_TENGINEOFF为 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  ..

更多推荐

opencv常用编译选项

本文发布于:2024-03-09 03:31:32,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1723631.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:选项   常用   opencv

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!