使用c语言将nv12格式的图像文件输出nv12格式的图像数据
时间: 2024-05-15 09:12:48 浏览: 5
以下是使用 C 语言将 NV12 格式的图像文件输出为 NV12 格式的图像数据的代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
FILE *fp;
char *filename = "input.nv12"; // 输入文件名
int width = 640; // 图像宽度
int height = 480; // 图像高度
int y_size = width * height; // Y 分量大小
int uv_size = y_size / 2; // UV 分量大小
unsigned char *data = NULL; // 图像数据缓存区
// 打开输入文件
fp = fopen(filename, "rb");
if (fp == NULL) {
printf("Error: cannot open input file.\n");
return -1;
}
// 分配图像数据缓存区
data = (unsigned char *)malloc(y_size + uv_size);
if (data == NULL) {
printf("Error: cannot allocate memory.\n");
fclose(fp);
return -1;
}
// 读取图像数据
fread(data, 1, y_size + uv_size, fp);
// 关闭输入文件
fclose(fp);
// 输出图像数据
filename = "output.nv12"; // 输出文件名
fp = fopen(filename, "wb");
if (fp == NULL) {
printf("Error: cannot open output file.\n");
free(data);
return -1;
}
// 写入图像数据
fwrite(data, 1, y_size + uv_size, fp);
// 关闭输出文件
fclose(fp);
// 释放图像数据缓存区
free(data);
return 0;
}
```
这段代码将读取名为 "input.nv12" 的 NV12 格式图像文件,并将其输出为名为 "output.nv12" 的 NV12 格式图像文件。你可以将其修改为你需要的输入输出文件名,并设置图像的宽度和高度。