查看: 25|回复: 0

模型部署过程时输出结果数据流保存为PNG

[复制链接]

1

主题

0

回帖

211

积分

中级会员

Rank: 3Rank: 3

积分
211
发表于 3 天前 | 显示全部楼层 |阅读模式
本帖最后由 弓长想学code 于 2025-5-21 17:00 编辑

硬件主板型号:TB-RK3588C0-A+TB-RK3588B1
固件名称/系统版本:Debian11
自编的或固件下载地址:开发板自带

问题描述及复现步骤:

工程师,你好!我这边遇到一个问题,板端部署了一个2倍超分辨率的算法,输出结果出现了问题,我想知道用什么方法可以正确地取出内存中的数据流格式,并保存结果
在srx2.cc的模型文件中的模型推理部分inference_srx2_model中是使用一个image_buffer_t结构体sr_img->virt_addr址指向output.buf对应的缓存
// 后处理过程:将输出张量的数据地址指向sr_img
    sr_img->width = app_ctx->model_width * 2;  // 如果是2倍超分辨率
    sr_img->height = app_ctx->model_height * 2;
    sr_img->format = IMAGE_FORMAT_RGB888;
    sr_img->size = get_image_size(sr_img);  // 根据宽度、高度和格式计算所需的内存大小
    sr_img->virt_addr = (unsigned char*)malloc(sr_img->size);
    if (sr_img->virt_addr == NULL) {
        printf("malloc buffer size:%d fail!\n", sr_img->size);
        return -1;
    }

    // caution: might have bug!!
    // 数据拷贝
    memcpy(sr_img->virt_addr, outputs[0].buf, sr_img->size < outputs[0].size ? sr_img->size : outputs[0].size);

在main.cc主函数中,保存上述得到的sr_img缓存中对应的推理结果:

// 执行推理
    ret = inference_syenetx2_model(&rknn_app_ctx, &src_image, &sr_image);
    if (ret != 0)
    {
        printf("init_yolov5_model fail! ret=%d\n", ret);
        goto out;
    }

    write_image("./output.png", &
sr_image);




input.png

input.png

output.png

output.png
回复

使用道具 举报

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

本版积分规则

QQ|风火轮WIKI|手机版|小黑屋|深圳风火轮团队 ( 粤ICP备17095099号 )

GMT+8, 2025-5-24 19:07 , Processed in 0.107168 second(s), 25 queries .

快速回复 返回顶部 返回列表
 
【客服1】 商务合作 15289193
【客服2】 业务洽谈 13257599
【客服3】 售前咨询 510313198
【邮箱】
smartfire@smartfire.cn