OpenJPEG的opj_encode是seg错误

opj_encode for OpenJPEG is seg faulting

本文关键字:seg 错误 encode opj OpenJPEG      更新时间:2023-10-16

我是OpenJPEG的新手,正在尝试使用它的库来创建一个c++应用程序,该应用程序接收图像文件并将其编码为J2k格式。我创建默认参数opj_set_default_encoder_parameters(&params)并设置outfile值。使用这些参数,我创建图像image = bmptoimage(filename, &params),并将参数的x和y设置为图像大小。opj_setup_encoder(encoder, &params, image)返回成功,但返回以下代码:

opj_start_compress(encoder, image, stream);
opj_encode(encoder, stream);  //seg fault here
opj_end_compress(encoder, stream);

我在opj_encode函数中得到一个信号11seg故障。

我想我没有设置一个重要的参数,但我找不到任何东西来指示它可能是哪个参数。它可能是什么参数?

也可能是我创建的流对象stream = opj_stream_create_default_file_stream(params.outfile, OPJ_FALSE); 不正确

感谢

更新

我已经发现opj_encode是seg故障,因为opj_start_compress正在失败。它失败,并返回错误"分辨率的数量与瓦片的大小相比太高"。我已经输入了params.numresolution = 1;(0导致malloc错误),但我仍然得到相同的错误。知道opj_start_compress为什么会失败吗?

我刚刚称之为已应答。由于opj_start_compress未成功,opj_encode失败。在编码之前进行检查以验证opj_start_compress的成功修复了seg故障。