前言:
在使用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;
}