Toybrick

RK3588 使用RGA的cvtColor,比使用opencv的cvtColor消耗了更多的CPU

LeeFree

注册会员

积分
105
楼主
发表于 2022-11-15 20:45:50    查看: 4822|回复: 2 | [复制链接]    打印 | 只看该作者
如题,在RK3588开发板上 使用RGA的cvtcolor,比使用opencv的cvtcolor消耗了更多的CPU并且速度更快(但偶尔会更慢)。
输入是importbuffer_virtualaddr()导入的虚拟地址内存,输出是importbuffer_fd()导入的是从mpp_buffer_group中分配出的drm_buf。并分别使用wrapbuffer_handle()转换一下。
以上过程只运行一次,即运行过程中不改变输入输出源。
cvtcolor的过程会进行多次。分辨率640*512,YUV422转BGR888。
RGA方法的耗时稳定在1150±50us。
OpenCV方法的耗时在800us至1800us之间波动,cpu占用率比前者低30%左右。

希望大佬们分析一下使用RGA硬件处理CPU占用反而更高,以及有时速度比不过opencv的原因。如果有解决方法就更好了。

回复

使用道具 举报

jefferyzhang

版主

积分
13574
沙发
发表于 2022-11-18 09:49:46 | 只看该作者
RGA的cvtcolor是什么接口
回复

使用道具 举报

LeeFree

注册会员

积分
105
板凳
 楼主| 发表于 2022-11-21 11:55:25 | 只看该作者
jefferyzhang 发表于 2022-11-18 09:49
RGA的cvtcolor是什么接口

RGA基本参照im2d_api_demo中的用法,使用的imcvtcolor(src, dst, src.format, dst.format);
cpu占用反常的问题解决了,是因为我使用了不同的线程同步方法。改为相同的方法后,使用RGA的cpu占用率是比opencv低的,低20%左右。
处理速度的问题还是原样。RGA的处理速度比较稳定。opencv有时快过rga有时更慢(opencv方法在程序启动到程序结束的过程间,处理速度是比较稳定的,程序关掉重启后,速度相较于上次启动有较大改变)

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

产品中心 购买渠道 开源社区 Wiki教程 资料下载 关于Toybrick


快速回复 返回顶部 返回列表