TIOVX 学习笔记其一:OpenVX
Reference:
1. OpenVX - Low-Power Vision Acceleration
OpenVX 是一个开放的计算机视觉应用程序跨平台加速标准。OpenVX 可以实现性能和功率优化的计算机视觉处理,特别是在嵌入式和实时的应用案例中,如人脸、身体和手势跟踪、智能视频监控、高级驾驶辅助系统(ADAS)、对象和场景重建、增强现实、视觉检测、机器人等。
OpenVX 可以认为是 OpenCV 的嵌入式版本,OpenVX 提供一些图像处理的标准 API,系统第三方 Vendor 可以用硬件来实现一些图像处理功能,效率更高;而 OpenCV 则偏向于用软件来实现一些定义的功能。
1.1 kernel
在 OpenVX 中,有一个关键词叫做 kernel,这里的 kernel 并不是指操作系统的 kernel,而是指 OpenVX 中的一种功能,比如对一个图片进行高通滤波的功能就是 OpenVX 的一个功能,这在 OpenVX 里面叫做一个 user kernel。
既然 kernel 是一种提供给用户使用的功能,那么这个功能函数一般支持传参,通过参数的不同来改变 kernel 的运行结果(如传入的图片就算一个参数)。
在 OpenVX 中,把参数定义初始化好后的 kernel 叫做 node,因此,node 就是 kernel 的一个实例化-----即拥有指定参数的 kernel。
node 可以在任何用任何语言编码的硬件或处理器上。例如,在 GPU 上,node 可以在 OpenCL 中实现。
1.2 OpenVX Graphs
OpenVX 开发者表达的一个图像操作图,每一步操作都是一个 node:
1.3 示例:An OpenVX “Hello, World !!!” Program
// init
vx_context context = vxCreateContext();//创建openvx上下文
vx_graph graph = vxCreateGraph( context );//基于上下文创建图
vx_image input = vxCreateImage( context, 640, 480, VX_DF_IMAGE_U8 );//基于上下文创建image变量
vx_image output = vxCreateImage( context, 640, 480, VX_DF_IMAGE_U8 );
vx_image intermediate = vxCreateVirtualImage( graph, 640, 480, VX_DF_IMAGE_U8 );//在图中创建虚拟image变量
vx_node F1 = vxF1Node( graph, input, intermediate );
vx_node F2 = vxF2Node( graph, intermediate, output );
vxVerifyGraph( graph );//校验graph中的node是否正常
vxProcessGraph( graph );//运行graph,这里会将刚才链接进来的所有Node的func执行一次
\newline
\newline
点击跳转:
TIOVX 学习笔记其二:TIVOX.
TIOVX 学习笔记其三:concerto makefile.
TIOVX 学习笔记其四:Objects.