我是OpenJPEG的新手,正在尝试使用its库创建一个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 seg fault。
我想我没有设置一个重要的参数,但我找不到任何东西来表明它可能是哪个参数。它可能是哪个参数?
也可能是我错误地创建了流对象,stream = opj_stream_create_default_file_stream(params.outfile, OPJ_FALSE);
谢谢
更新
我已经知道是因为opj_start_compress失败了,所以opj_encode出现了问题。它会失败,并显示错误“与平铺文件的大小相比,分辨率的数量太高了”。我已经输入了params.numresolution = 1; (0表示malloc错误),但是我仍然得到相同的错误。你知道为什么opj_start_compress会失败吗?
发布于 2015-12-23 23:27:33
我只是把这个叫做已应答。由于opj_start_compress未成功,opj_encode正在失败。在编码前检查以验证opj_start_compress是否成功修复了seg故障。
https://stackoverflow.com/questions/34407375
复制相似问题