一些 OpenCV 算法可以使用多线程来加速处理。OpenCV 可以使用线程后端之一进行构建。
| 后端 | 选择 | 默认 | 平台 | 描述 |
|---|---|---|---|---|
| 线程 | WITH_PTHREADS_PF | 是 | 类 Unix 系统 | 基于 pthreads 库的默认后端可在 Linux、Android 和其他类 Unix 平台上使用。线程池是在 OpenCV 中实现的,可以通过环境变量进行控制。有关详细信息,请查看 modules/core/src/parallel_impl.cpp 文件中的源代码。OPENCV_THREAD_POOL_* |
| 并发 (Windows) | 不适用 | 是 | Windows | 在 Windows 上可用,除非启用了其他后端,否则将在支持的平台上打开。 |
| GCD (Apple) | 不适用 | 是 | macOS | 可在 Apple 平台上使用,除非启用其他后端,否则将自动打开。使用全局系统线程池。 |
| TBB | WITH_TBB | 否 | 跨平台 | 是一个用于并行编程的跨平台库。 |
| OpenMP | WITH_OPENMP | 否 | 跨平台 | API 依赖于编译器支持。 |
| HPX | WITH_HPX | 否 | 跨平台 | 是一个实验性的后端,更适合多处理器环境。 |
注意:OpenCV 可以从 GitHub 下载和构建 TBB 库,此功能可以通过选项启用 BUILD_TBB。
线程插件
从 4.5.2 版本开始,OpenCV 支持动态加载的线程后端。目前只支持单独的编译过程:首先,您必须使用一些默认的并行后端(例如 pthreads)构建 OpenCV,然后构建每个插件并将生成的二进制文件复制到 lib 或 bin 文件夹中。
| 选择 | 默认 | 描述 |
|---|---|---|
| PARALLEL_ENABLE_PLUGINS | 是 | 启用插件支持,如果禁用此选项,OpenCV 将不会尝试加载任何内容 |
查看官方文档,了解独立插件构建说明。
GUI 后端(highgui 模块)
OpenCV 依赖于各种 GUI 库进行窗口绘制。
| 选择 | 默认 | 平台 | 描述 |
|---|---|---|---|
WITH_GTK | 是 | Linux 操作系统 | GTK 是 Linux 和类 Unix 操作系统中的常用工具包。默认情况下,如果找到,将使用版本 3,可以使用该选项强制使用版本 2。WITH_GTK_2_X |
WITH_WIN32UI | 是 | Windows | 是 Windows 中的标准 GUI API。 |
| 不适用 | 是 | macOS 操作系统 |


