OpenCV和OpenVX有什么联系和区别
联系和区别是:OpenCV是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习软件库。OpenVX 实现了跨平台加速处理,OpenVX在嵌入式和实时性系统中,可以更好地发挥它的优势,在某些场合配合OpenCV的强大功能,可以实现更好的效果。OpenVX和OpenCV并不冲突,他们可以说是互补的。
1.OpenCV概述
OpenCV是一个基于Apache2.0许可(开源)发行的,跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和Mac OS操作系统上。OpenVX具有轻量级与高效并行——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。
OpenCV用C++语言编写,它具有C ++,Python,Java和MATLAB接口,并支持Windows,Linux,Android和Mac OS。OpenCV主要倾向于实时视觉应用,并在可利用MMX和SSE指令,提供对于C#、Ch、Ruby,GO语言的支持。
OpenCV用C++语言编写,主要接口也是C++语言,但是依然保留了大量的C语言接口。该库也有大量的Python、Java与MATLAB/OCTAVE(版本2.5)的接口。这些语言的API接口函数,可以通过在线文档获得。
2.OpenVX介绍
OpenVX 实现了跨平台加速处理,OpenVX在嵌入式和实时性系统中,可以更好地发挥它的优势,在某些场合配合OpenCV的强大功能,可以实现更好的效果。OpenVX和OpenCV并不冲突,他们可以说是互补的。OpenVX 目的方便不同的硬件平台,实现相同的接口。就像一个骨架包含一些头文件,声明了很多宏、枚举、变量类型、函数等。 OpenVX实现了计算机视觉处理中,性能和能耗方面的优化,特别是在嵌入式和实时应用案例中,起到重要作用,例如面部、身体和动作跟踪,智能视频监控,高级驾驶协助系统(ADAS),物体和场景重建,增强现实,视觉检测,机器⼈学等。OpenVX定义了如OpenCL™那些计算框架,更高水平的执行抽象和内存模型,为在更多架构上的执行创新和高效执行带来重要意义,同时确保与旧版本一致的视觉加速API,完全实现应用可移植性。
3.OpenCV的优势
计算机视觉市场巨大而且持续增长,且这方面没有标准API,如今的计算机视觉软件大概,有以下三种:
1)代码效率低,不稳定,独立并与其他库不兼容。
2)耗费很高的商业化工具(比如Halcon, MATLAB+Simulink)。
3)依赖硬件的一些特别的解决方案(比如视频监控,制造控制系统,医疗设备)。标准的API将简化计算机视觉程序和解决方案的开发,OpenCV致力于成为这样的标准API。
OpenCV致力于真实世界的实时应用,通过优化的C代码的编写,大大提升了执行速度,并且可以通过购买Intel的IPP高性能多媒体函数库,得到更快的处理速度。
OpenVX在计算机视觉中的应用
1.简介
OpenVX是一个图像和视觉处理库,它是由Khronos Group维护的标准API。OpenVX的目的是提供高性能的硬件加速计算机视觉功能。它提供了一种用于构建和处理图像和视频流的标准界面,使开发人员可以更加容易地利用硬件加速功能。
2.OpenVX的核心概念
OpenVX的核心概念是图和图算子。一个图是由节点和边组成的,每个节点表示一个算法,边表示节点之间的依赖关系。另外,OpenVX还定义了一些图算子,用于实现各种功能。
3. OpenVX上下游控制与节点处理
OpenVX™是由Khronos集团开发的,用于计算机视觉应用程序跨平台加速的开放、无版税的API标准。Khronos集团是一个开放的行业联盟,由150多家领先的硬件和软件公司组成,为3D图形、增强和虚拟现实、视觉和机器学习,创建先进的免费加速标准。Khronos标准包括Vulkan®、OpenCL™、SSYCL™、OOpenVX™、NNNEF™、以及许多其他方面。
OpenVX上下游控制与节点处理,如图1-46所示。
图1-46 OpenVX上下游控制与节点处理