OpenJPEG的opj_encode是seg faulting

时间:2015-12-22 02:00:44

标签: c++ parameters encoder jpeg2000

我是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函数中得到一个11 seg错误信号。

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

也可能是我正在错误地创建流对象stream = opj_stream_create_default_file_stream(params.outfile, OPJ_FALSE);

由于

更新

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

1 个答案:

答案 0 :(得分:1)

我只是称之为回答。 opj_encode失败,因为opj_start_compress没有成功。在编码之前进行检查以验证opj_start_compress是否成功修复了seg故障。