gpt4 book ai didi

c++ - 你如何调整 AVFrame 的大小?

转载 作者:搜寻专家 更新时间:2023-10-31 01:00:22 49 4
gpt4 key购买 nike

如何调整 AVFrame 的大小?我

这是我目前正在做的事情:

AVFrame* frame = /*...*/;

int width = 600, height = 400;
AVFrame* resizedFrame = av_frame_alloc();

auto format = AVPixelFormat(frame->format);

auto buffer = av_malloc(avpicture_get_size(format, width, height) * sizeof(uint8_t));

avpicture_fill((AVPicture *)resizedFrame, (uint8_t*)buffer, format, width, height);

struct SwsContext* swsContext = sws_getContext(frame->width, frame->height, format,
width, height, format,
SWS_BILINEAR, nullptr, nullptr, nullptr);

sws_scale(swsContext, frame->data, frame->linesize, 0, frame->height, resizedFrame->data, resizedFrame->linesize);

但是在 resizedFrames->widthheight 仍然是 0 之后,AVFrame 的内容看起来像垃圾,当我得到一个数据未对齐的警告时调用 sws_scale。注意:我不想更改像素格式,也不想硬编码它是什么。

最佳答案

所以,有一些事情正在发生。

我认为如果您遵循这两个建议,您会发现重新缩放按预期工作,没有发出警告并且输出正确。质量可能不是很好,因为您正在尝试做 bilinear缩放。大多数人使用 bicubic缩放(SWS_BICUBIC)。

关于c++ - 你如何调整 AVFrame 的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31253485/

49 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com