YUV数据的读取与写入

前言:

在使用YUV数据做图像处理的时候,有时候不确定YUV数据的正确性,因此可以通过保存YUV数据生成离线文件来check。

功能:

读取一张YUV420SP的图像数据并对其数据的获取与保存。

示例:

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include "math.h"
#include "memory.h"

using namespace std;

void write_file(char *data, int len)
{
    static int		m = 0;
    FILE 			*fp = nullptr;
    char			filename[1024] = {0};

    snprintf(filename, sizeof(filename), "image%02d.yuv", m++);

    if( (fp=fopen(filename, "wb+")) == NULL ){  //以二进制方式打开
        return;
    }

    fwrite(data, len, 1, fp);
    fclose(fp);
}

int main(){

    /*读取YUV图像*/
    FILE *yuv_info;
    yuv_info = fopen("1280x720.yuv","rb");

    if(yuv_info == nullptr){
        cout << "open file foreman failed \n" << endl;
        return -1;
    }

    /*将YUV图像保存到指定大小的buffer中*/
    int len = 1280*720*3/2;
    char *buff_info = (char *)malloc(len*sizeof(char));
    fread(buff_info, sizeof(char), len, yuv_info);

    /*将buffer数据重新存放到图像*/
    write_file(buff_info,len);

    /*释放内存*/
    free(buff_info);
    return 0;
}

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值