我是 OpenJPEG 的新手,我正在尝试使用它的库来创建一个 c++ 应用程序,该应用程序接收图像文件并将它们编码为 J2k 格式。我创建默认参数,opj_set_default_encoder_parameters(¶ms)
并设置 outfile 值。使用这些参数,我创建图像image = bmptoimage(filename, ¶ms)
并将参数的 x 和 y 设置为图像大小。opj_setup_encoder(encoder, ¶ms, image)
返回成功,但代码如下:
opj_start_compress(encoder, image, stream);
opj_encode(encoder, stream); //seg fault here
opj_end_compress(encoder, stream);
我在 opj_encode 函数中收到信号 11 段错误。
我想我没有设置一个重要的参数,但我找不到任何东西来表明它可能是哪个参数。可能是哪个参数?
也可能是我错误地创建了流对象,stream = opj_stream_create_default_file_stream(params.outfile, OPJ_FALSE);
谢谢
更新
我发现这opj_encode
是段错误,因为 opj_start_compress 失败。它失败并出现错误“与图块大小相比,分辨率数量太高”。我已经输入params.numresolution = 1;
(0 导致 malloc 错误),但我仍然得到同样的错误。知道为什么opj_start_compress
会失败吗?