颜色转换RRRGGGBBB->RGBRGBRGB

    // RRRGGGBBB->RGBRGBRGB
    u8 *rgb = new u8[yuv2rgb_mem.size];
    int index = 0;
    int h = yuv_info.yuv_cap->height;
    int w = yuv_info.yuv_cap->width;
    for (int i = 0; i < h; i++)
    {
        for (int j = 0; j < w; j++)
        {
            rgb[index] = yuv2rgb_mem.virt[w * i + j];//b
            rgb[index + 1] = yuv2rgb_mem.virt[w * h + w * i + j]; //g
            rgb[index + 2] = yuv2rgb_mem.virt[w * h * 2 + w * i + j]; //r
            index += 3;
        }
    }

    // 保存文件
    const char *file_name = "rgb.rgb";
    FILE *fp = fopen(file_name, "wb");
    if (fp == NULL)
    {
        WsLogUtil::log2("rgb.bin fopen failed");
    }

    WsLogUtil::log("yuv2rgb_mem.size %lu", yuv2rgb_mem.size);

    size_t num = fwrite(rgb, 1, yuv2rgb_mem.size, fp);
    // size_t num = fwrite(yuv2rgb_mem.virt, 1, yuv2rgb_mem.size, fp);
    if (num == yuv2rgb_mem.size)
    {
        WsLogUtil::log("file saved success, %s", file_name);
    }
    else
    {
        WsLogUtil::log("file saved failed, %s", file_name);
    }

    delete[] rgb;
    fclose(fp);
    int h = yuv_info.yuv_cap->height;
    int w = yuv_info.yuv_cap->width;
    cv::Mat bgrImg(h, w, CV_8UC3);
    for(int row = 0; row <h ;row++)
    {
        Vec<uint8_t,3> *data_ptr = bgrImg.ptr<Vec<uint8_t,3>>(row);
        for(int col=0; col < w;col++)
        {
            data_ptr[col][0] = yuv2rgb_mem.virt[w*h*2 + w*row+ col]; //b
            data_ptr[col][1] = yuv2rgb_mem.virt[w*h + w*row+ col]; //g
            data_ptr[col][2] = yuv2rgb_mem.virt[w*row+ col]; //r
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值