一休摸鱼

一休摸鱼

2个粉丝

44

问答

20

专栏

24

资料

一休摸鱼  发布于  2022-10-26 13:39:21
采纳率 0%
44个问答
1334

RV1126 使用上NV12快速转换为RGB888的错误

我使用RV1126做图像处理,因为算法要求图像数据是RGB888的,我们默认抓出来的是NV12格式的,参考librga文档,我实现了快速转换函数。

  1. int nv12_to_rgb24_fast(unsigned char *yuvbuffer, unsigned char *rga_buffer, int width, int height)
  2. {
  3. rga_buffer_t src = wrapbuffer_virtualaddr(yuvbuffer, width, height, RK_FORMAT_YCrCb_420_SP);
  4. rga_buffer_t dst = wrapbuffer_virtualaddr(rga_buffer, width, height, RK_FORMAT_BGR_888);
  5. IM_STATUS STATUS = imcvtcolor(src, dst, RK_FORMAT_YCrCb_420_SP, RK_FORMAT_BGR_888);
  6. if (STATUS != IM_STATUS_SUCCESS) {
  7. log_e("imcvtcolor failed: %s\n", imStrError(STATUS));
  8. return -1;
  9. }
  10. return 0;
  11. }

大体调用流程为:

  1. unsigned char* rgbdata = (unsigned char*)malloc(IR_WIDTH*IR_HEIGHT*3);
  2. while (!isExit) {
  3. // IR videv = 1
  4. buffer = RK_MPI_SYS_GetMediaBuffer(RK_ID_VI, viChn, -1);
  5. if (!buffer) {
  6. continue;
  7. }
  8. if(index++ %2 ==0 ) {
  9. last_cts = get_system_cts();
  10. nv12_to_rgb24_fast((unsigned char*)RK_MPI_MB_GetPtr(buffer), rgbdata, IR_WIDTH, IR_HEIGHT);
  11. current_cts = get_system_cts();
  12. log_d("nv122rgb time :%lu", current_cts - last_cts);
  13. }
  14. }

运行的时候报错 :imcvtcolor failed: Unsupported function: Src unsupported input BP format.
请问下librga支持这种操作吗?如果不行,请问还有其他快速转换的API可调用不?

我来回答

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
回答3个
时间排序
认可量排序

白龙

4个粉丝

7

问答

0

专栏

0

资料

白龙 2023-08-08 14:47:53
认可0

是不可以使用IVE试试

一休摸鱼

2个粉丝

44

问答

20

专栏

24

资料

一休摸鱼 2022-10-28 15:03:38
认可0

D/NO_TAG [05-13 10:52:00 pid:2469 tid:-1649] (yuv2rgb.c:144)src.format=18, dst.format=5
E/NO_TAG [05-13 10:52:00] imcrop failed: Unsupported function: Src unsupported input BP format.

打印出来是是18->0x12

 RK_FORMAT_Y4           = 0xe,
    RK_FORMAT_YCbCr_400    = 0xf,
    RK_FORMAT_YCbCr_422_SP = 0x10,
    RK_FORMAT_YCbCr_422_P  = 0x11,
    RK_FORMAT_YCbCr_420_SP = 0x12,   // 这个格式,和我函数传参是一行的
    RK_FORMAT_YCbCr_420_P  = 0x13,
    RK_FORMAT_YCrCb_422_SP = 0x14,
    RK_FORMAT_YCrCb_422_P  = 0x15,
    RK_FORMAT_YCrCb_420_SP = 0x16,  
    RK_FORMAT_YCrCb_420_P  = 0x17,

想请问下librga支持快速 nv12转rgb吗? 现在我们使用CPU软转,一张图片要170ms,时间太久了。

Bepartofyou
Bepartofyou   回复   一休摸鱼  2022-10-28 16:59:36
0

是可以支持nv12转rgb格式的
尝试将附件版本librga解压替换external/linux-rga,并重新编译试试看。

Bepartofyou

3个粉丝

23

问答

12

专栏

8

资料

Bepartofyou 2022-10-28 10:57:49
认可0

从报错上来看是说src使用到BPP1/BPP2/BPP4/BPP8格式,RGA2不支持这个格式,可以在调用前打印一下src.format和dst.format,与include/rga.h中对应的格式对比一下索引值是否匹配。

快快快啦啦啦
快快快啦啦啦   回复   Bepartofyou  2023-03-04 17:51:55
0

能给个联系方式吗?有问题请教

或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区