并行处理
一些 OpenCV 算法可以使用多线程来加速处理。OpenCV 可以使用线程后端之一进行构建。
后端 | 选择 | 违约 | 平台 | 描述 |
---|---|---|---|---|
线程 | WITH_PTHREADS_PF |
上 | 类 Unix | 基于 pthreads 库的默认后端可在 Linux、Android 和其他类 Unix 平台上使用。线程池是在OpenCV中实现的,可以通过环境变量进行控制。有关详细信息,请查看 modules/core/src/parallel_impl.cpp 文件中的源代码。OPENCV_THREAD_POOL_*
|
并发 | 不适用 | 上 | 窗户 | 并发运行时在 Windows 上可用,除非启用了其他后端,否则将在支持的平台上打开。 |
最大公约数 | 不适用 | 上 | 苹果 | Grand Central Dispatch 可在 Apple 平台上使用,除非启用其他后端,否则将自动打开。使用全局系统线程池。 |
待定 | WITH_TBB |
关闭 | 倍数 | 线程构建块是一个用于并行编程的跨平台库。 |
OpenMP | WITH_OPENMP |
关闭 | 倍数 | OpenMPAPI 依赖于编译器支持。 |
HPX型 | WITH_HPX |
关闭 | 倍数 | 高性能 ParallelX 是一个实验性的后端,更适合多处理器环境。 |
-
注意
OpenCV 可以从 GitHub 下载和构建 TBB 库,此功能可以通过选项启用。
BUILD_TBB
线程插件
从 4.5.2 版本开始,OpenCV 支持动态加载的线程后端。目前只支持单独的编译过程:首先,您必须使用一些默认的并行后端(例如 pthreads)构建 OpenCV,然后构建每个插件并将生成的二进制文件复制到 lib 或 bin 文件夹中。
选择 | 违约 | 描述 |
---|---|---|
PARALLEL_ENABLE_PLUGINS | 上 | 启用插件支持,如果禁用此选项,OpenCV 将不会尝试加载任何内容 |
查看 OpenCV 安装概述,了解独立插件构建说明。
GUI 后端(highgui 模块)
OpenCV 依赖于各种 GUI 库进行窗口绘制。
选择 | 违约 | 平台 | 描述 |
---|---|---|---|
WITH_GTK |
上 | Linux操作系统 |
GTK 是 Linux 和类 Unix 操作系统中的常用工具包。默认情况下,如果找到,将使用版本 3,可以使用该选项强制使用版本 2。WITH_GTK_2_X
|
WITH_WIN32UI |
上 | 窗户 | WinAPI 是 Windows 中的标准 GUI API。 |
不适用 | 上 | macOS操作系统 | Cocoa 是 macOS 中使用的框架。 |
WITH_QT |
关闭 | 跨平台 | Qt是一个跨平台的GUI框架。 |
-
注意
使用 Qt 支持编译的 OpenCV 启用了高级 highgui 界面,有关详细信息,请参见 Qt New Functions。
OpenGL的
WITH_OPENGL
(默认:OFF)
OpenGL 集成可用于绘制具有以下后端的硬件加速窗口:GTK、WIN32 和 Qt。并启用与 OpenGL 的基本互操作性,有关详细信息,请参阅 OpenGL 互操作性和 OpenGL 支持。
HighGUI 插件
从 OpenCV 4.5.3 开始,GTK 后端可以构建为动态加载的插件。可以使用以下选项来控制此机制:
选择 | 违约 | 描述 |
---|---|---|
HIGHGUI_ENABLE_PLUGINS |
上 | 完全启用或禁用插件。 |
HIGHGUI_PLUGIN_LIST |
空 | 以逗号或分号分隔的要编译为插件的后端名称列表。支持的名称包括 gtk、gtk2、gtk3 和 all。 |
查看 OpenCV 安装概述,了解独立插件构建说明。
深度学习神经网络推理后端和选项(dnn 模块)
OpenCV 有自己的 DNN 推理模块,该模块具有自己的内置引擎,但也可以使用其他库来优化处理。可以在单个构建中启用多个后端。选择在运行时自动或手动进行。
选择 | 违约 | 描述 |
---|---|---|
WITH_PROTOBUF |
上 | 启用 protobuf 库搜索。OpenCV 可以构建自己的库副本,也可以使用外部库。dnn 模块需要此依赖项,如果找不到模块,则禁用该模块。 |
BUILD_PROTOBUF |
上 | 构建自己的 protobuf 副本。如果要使用外部库,则必须禁用。 |
PROTOBUF_UPDATE_FILES |
关闭 | 重新生成所有 .proto 文件。必须安装与使用的 Protobuf 版本兼容的 Protoc 编译器。 |
OPENCV_DNN_OPENCL |
上 | 启用内置 OpenCL 推理后端。 |
WITH_INF_ENGINE |
关闭 | 自 OpenVINO 2022.1 起已弃用启用英特尔推理引擎 (IE) 后端。允许以IE格式(.xml + .bin)执行网络。推理引擎必须作为 OpenVINO 工具套件的一部分安装,也可以作为从源代码构建的独立库安装。 |
INF_ENGINE_RELEASE |
2020040000 | 自 OpenVINO 2022.1 起已弃用定义与 OpenVINO 工具套件版本绑定的推理引擎库版本。必须是 10 位字符串,例如 OpenVINO 2020.4 的 2020040000。 |
WITH_NGRAPH |
关闭 | 自 OpenVINO 2022.1 起已弃用启用英特尔 NGraph 库支持。该库是推理引擎后端的一部分,它允许执行从 OpenCV 支持的多种格式的文件中读取的任意网络:Caffe、TensorFlow、PyTorch、Darknet 等。必须安装 NGraph 库,它包含在推理引擎中。 |
WITH_OPENVINO |
关闭 | 启用英特尔 OpenVINO 工具套件支持。应用于 OpenVINO>=2022.1 而不是 和 。WITH_INF_ENGINE``WITH_NGRAPH
|
OPENCV_DNN_CUDA |
关闭 | 启用 CUDA 后端。必须安装 CUDA、CUBLAS 和 CUDNN。 |
WITH_HALIDE |
关闭 | 使用实验性的 Halide 后端,它可以在运行时为 dnn 层生成优化的代码。必须安装卤化物。 |
WITH_VULKAN |
关闭 | 启用实验性 Vulkan 后端。不需要额外的依赖项,但可以使用外部 Vulkan 标头 ()。VULKAN_INCLUDE_DIRS
|
安装布局
安装根目录
若要安装生成的二进制文件,应配置根位置。默认值取决于发行版,在 Ubuntu 中通常设置为 .它可以在配置过程中更改:/usr/local
cmake -DCMAKE_INSTALL_PREFIX=/opt/opencv ../opencv
此路径可以相对于当前工作目录,在以下示例中,它将设置为:<absolute-path-to-build>/install
cmake -DCMAKE_INSTALL_PREFIX=安装 ../opencv
生成库后,可以使用以下命令将所有文件复制到配置的安装位置:
cmake --构建。--target 安装
要以普通用户身份将二进制文件安装到系统位置(例如),必须使用提升的权限运行上一个命令:/usr/local
sudo cmake --build 。--target 安装
-
注意
在某些平台 (Linux) 上,可以在安装过程中删除符号信息。二进制文件将缩小 10-15%,但调试将受到限制:cmake --构建。--目标安装/剥离
组件和位置
选项 cane 用于控制是否安装库的一部分:
选择 | 违约 | 描述 |
---|---|---|
INSTALL_C_EXAMPLES |
关闭 | 从 samples/cpp 目录安装 C++ 示例源。 |
INSTALL_PYTHON_EXAMPLES |
关闭 | 从 samples/python 目录安装 Python 示例源。 |
INSTALL_ANDROID_EXAMPLES |
关闭 | 从 samples/android 目录安装 Android 示例源。 |
INSTALL_BIN_EXAMPLES |
关闭 | 安装预构建的示例应用程序(必须启用)。BUILD_EXAMPLES
|
INSTALL_TESTS |
关闭 | 安装测试(必须启用)。BUILD_TESTS
|
OPENCV_INSTALL_APPS_LIST |
都 | 要安装的预构建应用程序的逗号或分号分隔列表(来自 apps 目录) |
以下选项允许相对于安装前缀修改组件的安装位置。这些选项的默认值取决于平台和其他选项,请查看 cmake/OpenCVInstallLayout.cmake 文件了解详情。
选择 | 组件 |
---|---|
OPENCV_BIN_INSTALL_PATH |
应用程序, 动态库 (WIN) |
OPENCV_TEST_INSTALL_PATH |
测试应用程序 |
OPENCV_SAMPLES_BIN_INSTALL_PATH |
示例应用程序 |
OPENCV_LIB_INSTALL_PATH |
动态库、导入库 (WIN) |
OPENCV_LIB_ARCHIVE_INSTALL_PATH |
静态库 |
OPENCV_3P_LIB_INSTALL_PATH |
第三方库 |
OPENCV_CONFIG_INSTALL_PATH |
CMake 配置包 |
OPENCV_INCLUDE_INSTALL_PATH |
头文件 |
OPENCV_OTHER_INSTALL_PATH |
额外的数据文件 |
OPENCV_SAMPLES_SRC_INSTALL_PATH |
示例源 |
OPENCV_LICENSES_INSTALL_PATH |
包含的第三方组件的许可证 |
OPENCV_TEST_DATA_INSTALL_PATH |
测试数据 |
OPENCV_DOC_INSTALL_PATH |
文档 |
OPENCV_JAR_INSTALL_PATH |
带有 Java 绑定的 JAR 文件 |
OPENCV_JNI_INSTALL_PATH |
Java 绑定的 JNI 部分 |
OPENCV_JNI_BIN_INSTALL_PATH |
来自 Java 绑定的 JNI 部分的动态库 |
以下选项可用于更改常见方案的安装布局:
选择 | 违约 | 描述 |
---|---|---|
INSTALL_CREATE_DISTRIB |
关闭 | 调整多个内容以生成 Windows 和 Android 发行版。 |
INSTALL_TO_MANGLED_PATHS |
关闭 | 将一个级别添加到多个安装位置,以允许并行安装。例如,启用此选项后,标头将安装到 /usr/include/opencv-4.4.0 而不是 /usr/include/opencv4。 |
其他功能
选择 | 违约 | 描述 |
---|---|---|
OPENCV_ENABLE_NONFREE |
关闭 | 已知库中包含的某些算法受专利保护,默认情况下处于禁用状态。 |
OPENCV_FORCE_3RDPARTY_BUILD |
关闭 | 一次启用所有选项。BUILD_
|
OPENCV_IPP_ENABLE_ALL |
关闭 | 一次启用所有选项。OPENCV_IPP_
|
ENABLE_CCACHE |
ON(在类 Unix 平台上) | 启用 ccache 自动检测。该工具包装编译器调用并缓存结果,可以显著缩短重新编译时间。 |
ENABLE_PRECOMPILED_HEADERS |
ON(用于 MSVC) | 启用预编译标头支持。缩短了构建时间。 |
BUILD_DOCS |
关闭 | 启用文档构建(doxygen、doxygen_cpp、doxygen_python doxygen_javadoc目标)。必须安装 Doxygen 才能构建 C++ 文档。必须安装 Python 和 BeautifulSoup4 才能构建 Python 文档。必须安装 Javadoc 和 Ant 才能构建 Java 文档(Java SDK 的一部分)。 |
ENABLE_PYLINT |
ON(启用文档或示例时) | 使用 Pylint(check_pylint目标)启用 python 脚本检查。必须安装 Pylint。 |
ENABLE_FLAKE8 |
ON(启用文档或示例时) | 使用 Flake8(check_flake8目标)启用 python 脚本检查。必须安装 Flake8。 |
BUILD_JAVA |
上 | 启用 Java 包装器构建。必须安装 Java SDK 和 Ant。 |
BUILD_FAT_JAVA_LIB |
ON(适用于静态 Android 版本) | 构建单个opencv_java动态库,其中包含与 Java 绑定捆绑在一起的所有库功能。 |
BUILD_opencv_python2 |
上 | 构建 python2 绑定(已弃用)。必须安装带有开发文件和 numpy 的 Python。 |
BUILD_opencv_python3 |
上 | 生成 python3 绑定。必须安装带有开发文件和 numpy 的 Python。 |
CAROTENE_NEON_ARCH |
'(自动)' | 将霓虹灯拱门切换为胡萝卜素。如果它没有设置任何内容,它将被自动检测。如果设置为 8,则使用 ARMv8(及更高版本)。否则,将使用 ARMv7。 |
TODO:需要单独的教程来涵盖绑定构建
自动构建
某些功能是专门为自动化构建环境添加的,例如持续集成和打包系统。
选择 | 违约 | 描述 |
---|---|---|
ENABLE_NOISY_WARNINGS |
关闭 | 启用多个被视为干扰的编译器警告,即重要性低于其他警告。这些警告通常被忽略,但在某些情况下可能值得检查。 |
OPENCV_WARNINGS_ARE_ERRORS |
关闭 | 将编译器警告视为错误。生成将停止。 |
ENABLE_CONFIG_VERIFICATION |
关闭 | 对于每个已启用的依赖项(选项),请验证是否已找到并启用它(变量)。默认情况下,如果未找到依赖项,功能将静默关闭,但启用此选项后,cmake 配置将失败。方便于需要稳定库配置的打包系统,不依赖于环境波动。WITH_``HAVE_
|
OPENCV_CMAKE_HOOKS_DIR |
空 | OpenCV 允许通过在每个阶段和子阶段添加自定义钩子脚本来自定义配置过程。在此变量设置的目录中具有预定义名称的 cmake 脚本将包含在各个配置阶段之前和之后。文件名示例:CMAKE_INIT.cmake、PRE_CMAKE_BOOTSTRAP.cmake、POST_CMAKE_BOOTSTRAP.cmake 等。其他名称未记录在案,可以通过搜索ocv_cmake_hook宏调用在项目 cmake 文件中找到。 |
OPENCV_DUMP_HOOKS_FLOW |
关闭 | 在每个 cmake 钩子脚本调用上启用调试消息打印。 |
Contrib 模块
如前所述,模块中使用了以下构建选项,可以通过设置选项将这些额外的模块添加到最终构建中。opencv_contrib``DOPENCV_EXTRA_MODULES_PATH
选择 | 违约 | 描述 |
---|---|---|
WITH_CLP |
关闭 | 将添加模块中所需的 coinor 线性规划库构建支持。确保安装 coinor-clp 的开发库。videostab
|
在线教程
- 麻省理工学院人工智能视频教程 – 麻省理工人工智能课程
- 人工智能入门 – 人工智能基础学习。Peter Norvig举办的课程
- EdX 人工智能 – 此课程讲授人工智能计算机系统设计的基本概念和技术。
- 人工智能中的计划 – 计划是人工智能系统的基础部分之一。在这个课程中,你将会学习到让机器人执行一系列动作所需要的基本算法。
- 机器人人工智能 – 这个课程将会教授你实现人工智能的基本方法,包括:概率推算,计划和搜索,本地化,跟踪和控制,全部都是围绕有关机器人设计。
- 机器学习 – 有指导和无指导情况下的基本机器学习算法
- 机器学习中的神经网络 – 智能神经网络上的算法和实践经验
- 斯坦福统计学习
有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓
人工智能书籍
- OpenCV(中文版).(布拉德斯基等)
- OpenCV+3计算机视觉++Python语言实现+第二版
- OpenCV3编程入门 毛星云编著
- 数字图像处理_第三版
- 人工智能:一种现代的方法
- 深度学习面试宝典
- 深度学习之PyTorch物体检测实战
- 吴恩达DeepLearning.ai中文版笔记
- 计算机视觉中的多视图几何
- PyTorch-官方推荐教程-英文版
- 《神经网络与深度学习》(邱锡鹏-20191121)
- …
第一阶段:零基础入门(3-6个月)
新手应首先通过少而精的学习,看到全景图,建立大局观。 通过完成小实验,建立信心,才能避免“从入门到放弃”的尴尬。因此,第一阶段只推荐4本最必要的书(而且这些书到了第二、三阶段也能继续用),入门以后,在后续学习中再“哪里不会补哪里”即可。
第二阶段:基础进阶(3-6个月)
熟读《机器学习算法的数学解析与Python实现》并动手实践后,你已经对机器学习有了基本的了解,不再是小白了。这时可以开始触类旁通,学习热门技术,加强实践水平。在深入学习的同时,也可以探索自己感兴趣的方向,为求职面试打好基础。
第三阶段:工作应用
这一阶段你已经不再需要引导,只需要一些推荐书目。如果你从入门时就确认了未来的工作方向,可以在第二阶段就提前阅读相关入门书籍(对应“商业落地五大方向”中的前两本),然后再“哪里不会补哪里”。
有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓
文章来源:https://www.toymoban.com/news/detail-827049.html
文章来源地址https://www.toymoban.com/news/detail-827049.html
到了这里,关于OpenCV对的并行处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!