AVFrame 构建mat
时间: 2024-05-07 16:22:04 浏览: 73
ffmpeg avframe to jpeg
在将 AVFrame 转换为 Mat 之前,需要先确定 AVFrame 的像素格式,以及每个像素所占用的位数,例如 RGB24 格式的像素每个像素占用 3 个字节,而 RGBA 格式的像素每个像素占用 4 个字节。
然后,通过如下代码将 AVFrame 转换为 Mat:
```cpp
AVFrame* frame = ...; // 获取 AVFrame 对象
int width = frame->width;
int height = frame->height;
int stride = frame->linesize[0];
int channels = 3; // 假设像素格式为 RGB24
Mat mat(height, width, CV_8UC3, frame->data[0], stride);
```
其中,`stride` 表示每一行像素所占用的字节数,`channels` 表示颜色通道数,此处假设为 3。`CV_8UC3` 表示每个像素由 3 个 8 位无符号整型构成。
阅读全文