我尝试使用ff_load_imageimg2dec.c 中定义的函数加载图像文件:
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);
Run Code Online (Sandbox Code Playgroud)
但是,我无缘无故地遇到了分段错误。我已经把printf语句放在了所有地方ff_load_image,它已经到达函数的末尾。为什么会出现分段错误?有没有更好的方法来加载图像?我想获得图片中的每个像素。
我怀疑你传递了不正确的论点。根据ff_load_image文档,您的论点应该是:
您的前两个论点似乎不正确。
uint8_t **,如果您为至少 4 个uint8_t指针分配了内存,但未data指向有效内存,这仍然可以。int *没有指向有效内存的相同问题。因此,您的程序可能正在调用未定义的行为。
我会将您的初始化更改为:
uint8_t *data[4];
int linesize[4];
Run Code Online (Sandbox Code Playgroud)
然后调用ff_load_image为:
int i = ff_load_image(data, linesize, &width, &height, &pix_fmt,
filename, &log_ctx);
Run Code Online (Sandbox Code Playgroud)
此外,您可能想查看如何使用ff_load_image.
| 归档时间: |
|
| 查看次数: |
1271 次 |
| 最近记录: |