我尝试使用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);
但是,我无缘无故地遇到了分段错误。我已将printf
个语句放在ff_load_image
以上,并且它已到达函数的末尾。为什么我会出现分段错误?是否有更好的方法来加载图像?我想得到图片中的每个像素。
答案 0 :(得分:3)
我怀疑你传递了不正确的参数。根据{{3}},你的论点应该是:
您的前两个论点似乎不正确。
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);
此外,您可能需要查看ff_load_image
documentation。