0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【ROC-RK3568-PC开发板试用体验】RGA——硬件图像加速模块使用方法

开发板试用精选 ? 来源:开发板试用 ? 作者:电子发烧友论坛 ? 2022-10-18 15:31 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

本文来源电子发烧友社区,作者:羁傲不驯, 帖子地址:https://bbs.elecfans.com/jishu_2307583_1_1.html


RGA (Raster Graphic Acceleration Unit)是一个独立的2D硬件加速器,可用于加速点/线绘制,执行图像缩放、旋转、bitBlt、alpha混合等常见的2D图形操作。
K3568,其规格如下:

硬件版本 代码名称 输入最小 输入最大 输出最小 输出最大 像素/周期 性能(频率300M)
RGA2-Enhance skylarkV2 2x2 8192x8192 2x2 4096x4096 2 ≈600Mpix/s
硬件版本 代码名称 输入图像数据格式 输出图像数据格式
RGA2-Enhance skylarkV2 RGBA/BGRA/ARGB/ABGR8888RGBA/BGRA/ARGB/ABGR4444RGBA/BGRA/ARGB/ABGR5551RGB/BGR888RGB/BGR565YUV420 8位YUV420 10位YUV422 8位YUV422 10位YUYV/YVYU/UYVY/VYUY422BPP8/BPP4/BPP2/BPP1(仅适用于调色板) RGBA/BGRA/ARGB/ABGR8888RGBA/BGRA/ARGB/ABGR4444RGBA/BGRA/ARGB/ABGR5551RGB/BGR888RGB/BGR565YUV420 8位YUV422 8位YUYV/YVYU/UYVY/VYUY422YUYV/YVYU/UYVY/VYUY420YUV400Y4/Y1

image.png

本文程序见下链接:
github.com

RGA模块支持库为librga.so,通过对图像缓冲区结构体struct rga_info进行配置,实现相应的2D图形操作。为了获得更友好的开发体验,在此基础上进一步封装常用的2D图像操作接口。新的接口主要包含以下特点:

  • 接口定义参考opencv/matlab中常用的2D图形接口定义,以减少二次开发的学习成本。
  • 为消除RGA硬件版本差异带来的兼容问题,加入RGA query查询功能。查询内容主要包括版本信息,输入输出大分辨率及图像格式的支持。
  • 对于2D图像复合操作,增加improcess接口。通过传入一系列预定义的usage执行复合操作。
  • 执行图像操作之前,需要对输入输出图像缓冲区进行处理。调用wrapbuffer_T接口将输入输出图像信息填充到结构体struct rga_buffer_t,结构体中包含分辨率及图像格式等信息。

1、图片输入

  1. 使用libpng or libjpeg等开源库实现对用户输入图像的解码。
  2. 参考imv 源码,进行图片类型识别。
  3. 使用开源软件Opencv自适应打开图片文件。
  4. 使用stb-image库,打开文件获取图像。(*)

参考了很多大佬的开源软件,最后选择了使用简单易用的stb库实现对图像文件的解析。

图片输入

解析图片:

p_src->img_data = stbi_load(file_patch, &iw, &ih, &n, 0);

解析后的图像数据为img_data,图像的宽:iw;高:ih;颜色通道:n 其中n为:

enum {    
STBI_default = 0, // only used for desired_channels     
STBI_grey       = 1,   //灰度图    
STBI_grey_alpha = 2,    //灰度+透明度    
STBI_rgb        = 3,    //RGB图    
STBI_rgb_alpha  = 4    // RGB+透明度 
};

图像缩放

图像缩放功能使用rga接口,输入输出参数均为最简图像结构体。

struct image_param{     
int width; //宽     
int heigth; //高     
RgaSURF_FORMAT fmt; // 图像格式     
unsigned char *img_data; //图像数据 
}; 
int rga_resize_test(struct image_param *p_src, struct image_param *p_dst)

使用完成后需要使用release_image_file_buf接口释放图像内存!!!

图像剪裁

int rga_crop_test(struct image_param *p_src, struct image_param *p_dst, im_rect src_rect);

测试了如下图片格式

输入图片 输出图片 颜色格式 解析颜色格式 是否正常输出 转化时间ms
8192*8192 4096*4096 RGBA32 RGB888 217.829
8192*8192 8192*2048 YUV420 RGB888 不支持长宽超过分辨率的缩放
1920*1080 1280*720 YUV420 RGB888 8.890
3840*2160 1280*720 RGB32 RGBA8888 27.267



声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • RK3568
    +关注

    关注

    5

    文章

    590

    浏览量

    6498
  • 开发板试用
    +关注

    关注

    3

    文章

    302

    浏览量

    2421
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    RK3568 EVB开发板 深度休眠与快速醒的工作流程

    RK3568 EVB开发板关于深度休眠和唤醒流程的分析
    的头像 发表于 07-22 09:49 ?126次阅读
    <b class='flag-5'>RK3568</b> EVB<b class='flag-5'>开发板</b> 深度休眠与快速醒的工作流程

    【HZ-RK3568开发板免费体验】1、开发板资源、SDK使用和镜像烧写

    试用开发板是合众恒跃的HZ_EVM_3568开发板RK3568 是一颗高性能、低功耗的四核应用处理器芯片,专为个人移动互联网设备、AIo
    发表于 07-21 20:52

    RK3568开发板暗藏32位兼容开关?飞凌嵌入式带你一键解锁!

    RK3568是一款64位处理器,飞凌嵌入式为其提供的交叉编译器也是64位的,然而部分用户可能需要在RK3568开发板上运行32位应用。本文将详细阐述如何使用32位交叉编译器,编译出32位应用,并使其能够在飞凌嵌入式
    的头像 发表于 07-19 08:49 ?2414次阅读
    <b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b>暗藏32位兼容开关?飞凌嵌入式带你一键解锁!

    【HZ-RK3568开发板免费体验】HZ-RK3568开发板初步接触

    J处理器设计,支持图像H.264编解码处理,内置3D GPU可图像处理,2D硬件加速引擎,内置0.8TOPS NPU算力,具备一定AI能力。 RK3568介绍如下: HZ-
    发表于 07-10 23:19

    一文掌握RK3568开发板Android13挂载Windows共享目录

    在物联网和边缘计算场景中,开发板PC端的高效文件交互尤为重要。现以iTOP-RK3568开发板为例,详细演示Android13系统如何通过CIFS协议挂载Windows共享目录,实现
    的头像 发表于 04-17 13:54 ?493次阅读
    一文掌握<b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b>Android13挂载Windows共享目录

    RK3568开发板教程:以iTOP-RK3568开发板为例 Android13通过CIFS协议挂载Windows共享目录

    开发板PC端的高效文件交互尤为重要。现以iTOP-RK3568开发板为例,详细演示Android13系统如何通过CIFS协议挂载Windows共享目录,实现
    的头像 发表于 04-16 14:08 ?857次阅读
    <b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b>教程:以iTOP-<b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b>为例 Android13通过CIFS协议挂载Windows共享目录

    北京迅为RK3568开发板OpenHarmony系统南向驱动开发内核HDF驱动框架架构

    北京迅为RK3568开发板OpenHarmony系统南向驱动开发内核HDF驱动框架架构
    的头像 发表于 03-11 14:13 ?1149次阅读
    北京迅为<b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b>OpenHarmony系统南向驱动<b class='flag-5'>开发</b>内核HDF驱动框架架构

    【技术分享】迅为RK3568开发板使用TFTP加载内核设备树

    【技术分享】迅为RK3568开发板使用TFTP加载内核设备树
    的头像 发表于 02-21 14:04 ?745次阅读
    【技术分享】迅为<b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b>使用TFTP加载内核设备树

    迅为RK3568开发板驱动指南Linux中通用SPI设备驱动

    迅为RK3568开发板驱动指南Linux中通用SPI设备驱动
    的头像 发表于 01-23 11:02 ?2917次阅读
    迅为<b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b>驱动指南Linux中通用SPI设备驱动

    [迅为RK3568开发板]非科班也能玩转Android应用,体验QT跨平台能力

    [迅为RK3568开发板]非科班也能玩转Android应用,体验QT跨平台能力
    的头像 发表于 12-18 16:41 ?977次阅读
    [迅为<b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b>]非科班也能玩转Android应用,体验QT跨平台能力

    RK3568内置MCU开发介绍之一

    A55(下文简称AP)和1个RISCV(下文简称MCU)。 硬件准备 首先介绍一下硬件。主板为风火轮科技的YY3568开发板,主控RK3568
    的头像 发表于 12-01 16:09 ?1906次阅读
    <b class='flag-5'>RK3568</b>内置MCU<b class='flag-5'>开发</b>介绍之一

    【迅为电子】叮!您的RK3568开发板系统镜像备份方法请查收

    【迅为电子】叮!您的RK3568开发板系统镜像备份方法请查收
    的头像 发表于 11-27 14:02 ?1133次阅读
    【迅为电子】叮!您的<b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b>系统镜像备份<b class='flag-5'>方法</b>请查收

    【迅为】瑞芯微RK3588开发板RK3568开发板区别及优势

    RK3568开发板
    的头像 发表于 11-18 14:19 ?1537次阅读
    【迅为】瑞芯微<b class='flag-5'>RK</b>3588<b class='flag-5'>开发板</b><b class='flag-5'>RK3568</b><b class='flag-5'>开发板</b>区别及优势

    迅为iTOP-RK3568/RK3588开发板获麒麟软件适配认证

    迅为iTOP-RK3568/RK3588开发板获麒麟软件适配认证
    的头像 发表于 10-18 14:56 ?1282次阅读
    迅为iTOP-<b class='flag-5'>RK3568</b>/<b class='flag-5'>RK</b>3588<b class='flag-5'>开发板</b>获麒麟软件适配认证

    瑞芯微RK3568鸿蒙开发板OpenHarmony系统修改cfg文件权限方法

    本文适用于OpenHarmony开源鸿蒙系统修改cfg文件权限方法,深圳触觉智能研发的RK3566、RK3568RK3588等开发板、主板
    的头像 发表于 09-11 13:26 ?1965次阅读
    瑞芯微<b class='flag-5'>RK3568</b>鸿蒙<b class='flag-5'>开发板</b>OpenHarmony系统修改cfg文件权限<b class='flag-5'>方法</b>