gpt4 book ai didi

c - ffmpeg:加载图像的函数

转载 作者:行者123 更新时间:2023-12-04 22:46:21 25 4
gpt4 key购买 nike

我尝试使用 img2dec.c 中定义的 ff_load_image 函数加载图像文件:

  char* filename = argv[1];
uint8_t* data;
int linesize, width, height, log_ctx;
enum AVPixelFormat pix_fmt = AV_PIX_FMT_RGB24;

//load the image
int i = ff_load_image(&data, &linesize, &width, &height, &pix_fmt, filename, &log_ctx);
printf("%i\n", i);

但是,我无缘无故地遇到了段错误。我已在 ff_load_image 上放置了 printf 语句,并且它已到达函数末尾。为什么我会出现段错误?还有更好的方法来加载图像吗?我想获取图片中的每个像素。

最佳答案

我怀疑您传递了不正确的参数。根据ff_load_image documentation ,你的论点应该是:

  1. uint8_t *[4]
  2. 整数[4]
  3. 整数*
  4. 整数*
  5. 枚举 AVPixelFormat *
  6. 常量字符*
  7. 无效*

你的前两个论点似乎不正确。

  • 您的第一个参数是 uint8_t ** 如果您为至少 4 个 uint8_t 指针分配内存,这仍然没问题,但是 data 是没有指向有效的内存。
  • 您的第二个参数是 int * ,它也存在未指向有效内存的相同问题。

因此,您的程序可能正在调用未定义的行为。

我会将您的初始化更改为:

uint8_t *data[4];
int linesize[4];

然后调用ff_load_image:

int i = ff_load_image(data, linesize, &width, &height, &pix_fmt,
filename, &log_ctx);

此外,您可能需要查看an example of how to use ff_load_image .

关于c - ffmpeg:加载图像的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22459940/

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