本文來源電子發燒友社區,作者:羈傲不馴, 帖子地址: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 |
本文程序見下鏈接:
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、圖片輸入
- 使用libpng or libjpeg等開源庫實現對用戶輸入圖像的解碼。
- 參考imv 源碼,進行圖片類型識別。
- 使用開源軟件Opencv自適應打開圖片文件。
- 使用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
+關注
關注
4文章
525瀏覽量
5232 -
開發板試用
+關注
關注
3文章
301瀏覽量
2147
發布評論請先 登錄
相關推薦
瑞芯微RK3568鴻蒙開發板OpenHarmony系統修改cfg文件權限方法
![瑞芯微<b class='flag-5'>RK3568</b>鴻蒙<b class='flag-5'>開發板</b>OpenHarmony系統修改cfg文件權限<b class='flag-5'>方法</b>](https://file1.elecfans.com/web2/M00/06/01/wKgZombhKSWAfaYCAACRBodpoiI952.png)
國產核心板全面進攻-RK3568開發板評測
![國產核心<b class='flag-5'>板</b>全面進攻-<b class='flag-5'>RK3568</b><b class='flag-5'>開發板</b>評測](https://file.elecfans.com/web2/M00/08/64/pYYBAGDwFEGADIPWAAFlJOlmLxg664.jpg)
鴻蒙OpenHarmony南向:【RK3568開發板介紹】
![鴻蒙OpenHarmony南向:【<b class='flag-5'>RK3568</b><b class='flag-5'>開發板</b>介紹】](https://file1.elecfans.com/web2/M00/D8/1F/wKgZomYpEAGALxyGABBtbKfhj8Q460.jpg)
評論