OpenCV 是跨平台的。这个库是用C语言编写的,这使得 OpenCV 几乎可以移植到所有的商业系统,从 PowerPC mac 到机器狗。从 2.0 版开始,OpenCV 就包含了传统的 C 接口和新的 c++ 接口。在大多数情况下,新的 OpenCV 算法是用 c++ 开发的。此外,Python 和 Java 等语言的包装器也被开发出来,以鼓励更广泛的受众采用。OpenCV 可以在桌面( Windows、Linux、 Android、MacOS、FreeBSD、OpenBSD )和移动设备( Android、Maemo、IOS )上运行。
安卓
自 2010 年 OpenCV 被移植到 Android 环境以来,该库在移动应用程序开发方面兼容了全部功能。
ARM
目前,大多数嵌入式设备都使用基于ARM架构的CPU,包括 Cortex-A 和 Cortex-M 系列。深度学习算法通常在基于 x86/x64 架构、具有强大的Nvidia图形处理器的服务器上训练。但是推论研究工作仍需要在低功耗的ARM芯片上进行。
CUDA
2010年, OpenCV 添加了一个提供GPU加速的新模块。GPU 模块是该库功能的一个重要组成部分,并且仍在积极的开发中。它是使用 CUDA 实现的,受益于 CUDA 生态系统,包括像 NPP ( NVIDIA 性能原语)这样的库。通过在 OpenCV 上添加 CUDA 加速,开发者可以在消耗更少能量的同时,在更高分辨率的图像上实时运行更精确和复杂的 OpenCV 算法。
IOS
2012年, OpenCV 开发团队积极为 IOS 添加扩展支持。从版本2.4.2(2012)开始对 IOS 完全支持。
OpenCL
2011年,一个提供 OpenCV 算法的 OpenCL™ 加速的新模块被添加到库中。这使得基于 OpenCV 的代码能够利用异构硬件,特别是利用离散和集成 GPU 的潜力。官方的 OpenCV WinMegaPack 从2.4.6(2013)版本开始包含 OCL 模块。
在2.4分支中,OpenCL 加速版本的函数和类位于单独的 OCL 模块和单独的命名空间中(cv::ocl),而且往往有不同的名称
(e.g. cv::resize()
vs cv::ocl::resize()
and cv::CascadeClassifier
vs cv::ocl::OclCascadeClassifier
)
这就要求在用户应用程序代码中有一个独立的代码分支。从 OpenCV 3.0(2013年的主分支)开始, OpenCL 加速分支透明地添加到原始 API 函数中,并在需要使用的情况下自动引用。