OpenCV 的设计目标是跨平台。因此,该库是用 C 语言编写的,这使得 OpenCV 几乎可以移植到任何商业系统,从 PowerPC Mac 到机器人狗。从 2.0 版本开始,OpenCV 除了传统的 C 接口外,还包含了新的 C++ 接口。在大多数情况下,新的 OpenCV 算法现在都是用 C++ 开发的。此外,还开发了 Python 和 Java 等语言的包装器,以鼓励更广泛的受众采用 OpenCV。OpenCV 可以在桌面(Windows、Linux、Android、MacOS、FreeBSD、OpenBSD)和移动(Android、Maemo、iOS)设备上运行。
Android
自 2010 年起,OpenCV 已移植到 Android 环境,允许在移动应用程序开发中使用该库的全部功能。
ARM
目前,大多数嵌入式设备使用基于 ARM 架构的 CPU,包括 Cortex-A 和 Cortex-M 系列。深度学习算法通常在具有强大 Nvidia GPU 的基于 x86/x64 的服务器上进行训练。但是,推理需要在低功耗的 ARM 芯片上执行。
CUDA
2010 年,一个提供 GPU 加速的新模块被添加到 OpenCV 中。'gpu' 模块涵盖了库功能的很大一部分,并且仍在积极开发中。它是使用 CUDA 实现的,因此受益于 CUDA 生态系统,包括 NPP(NVIDIA 性能基元)等库。通过在 OpenCV 中添加 CUDA 加速,开发人员可以在更高分辨率的图像上实时运行更准确和复杂的 OpenCV 算法,同时消耗更少的功率。
iOS
2012 年,OpenCV 开发团队积极致力于为 iOS 添加扩展支持。自 2.4.2 版本(2012 年)起,提供了完整的集成。
OpenCL
2011 年,一个提供 OpenCL™ 加速 OpenCV 算法的新模块被添加到库中。这使得基于 OpenCV 的代码能够利用异构硬件,特别是利用离散和集成 GPU 的潜力。自 2.4.6 版本(2013 年)起,官方 OpenCV WinMegaPack 包含 ocl 模块。
在 2.4 分支中,函数和类的 OpenCL 加速版本位于单独的 ocl 模块和单独的命名空间 (cv::ocl
) 中,并且通常具有不同的名称(例如 cv::resize()
与 cv::ocl::resize()
以及 cv::CascadeClassifier
与 cv::ocl::OclCascadeClassifier
),这需要在用户应用程序代码中使用单独的代码分支。从 OpenCV 3.0 (master 分支,截至 2013 年) 开始,OpenCL 加速分支透明地添加到原始 API 函数中,并在可能/合理的情况下自动使用。