libyuv::YUY2ToARGB
2024-08-23
18
0
libyuv::YUY2ToARGB转出来的实际格式为:BGRA
libyuv::YUY2ToARGB
函数用于将 YUY2 格式的图像转换为 ARGB 格式的图像。以下是一个简单的示例,展示了如何使用 libyuv::YUY2ToARGB
函数来转换一个分辨率为 1280x720 的图像:
#include <libyuv.h>
#include <iostream>
int main() {
const int width = 1280;
const int height = 720;
// 分配内存空间
uint8_t* yuy2_data = new uint8_t[width * height * 2]; // YUY2 格式需要宽高的 2 倍空间
uint8_t* argb_data = new uint8_t[width * height * 4]; // ARGB 格式需要宽高的 4 倍空间
// 假设 yuy2_data 已经被填充了有效的 YUY2 数据
// ...
// 使用 libyuv 进行转换
int result = libyuv::YUY2ToARGB(yuy2_data, width * 2, // YUY2 数据的步长
argb_data, width * 4, // ARGB 数据的步长
width, height);
if (result != 0) {
std::cerr << "libyuv::YUY2ToARGB failed with error code: " << result << std::endl;
delete[] yuy2_data;
delete[] argb_data;
return -1;
}
// 现在 argb_data 包含了转换后的 ARGB 数据
// 可以进行后续处理,比如保存到文件或显示到屏幕上
// ...
// 释放内存空间
delete[] yuy2_data;
delete[] argb_data;
return 0;
}
说明:
内存分配:
yuy2_data
的大小为width * height * 2
字节,因为 YUY2 格式每个像素占用 2 字节。argb_data
的大小为width * height * 4
字节,因为 ARGB 格式每个像素占用 4 字节。
libyuv::YUY2ToARGB
函数参数:- 第一个参数是指向 YUY2 数据的指针。
- 第二个参数是 YUY2 数据的步长,通常是图像的宽度乘以每个像素的字节数(对于 YUY2 是 2)。
- 第三个参数是指向 ARGB 数据的指针。
- 第四个参数是 ARGB 数据的步长,通常是图像的宽度乘以每个像素的字节数(对于 ARGB 是 4)。
- 第五个和第六个参数分别是图像的宽度和高度。
错误处理:
- 如果
YUY2ToARGB
返回非零值,则表示转换失败,你可以通过检查返回值来了解具体的错误原因。
- 如果
在实际应用中,你需要确保 yuy2_data
中已经填充了有效的 YUY2 数据,然后调用 YUY2ToARGB
进行转换。转换完成后,你可以对 argb_data
进行进一步处理。