我是OpenJPEG的新手,並且正在嘗試使用它的庫來創建一個接受圖像文件並將它們編碼爲J2k格式的C++應用程序。我創建了默認參數opj_set_default_encoder_parameters(¶ms)
並設置了outfile值。使用這些參數,我創建圖像image = bmptoimage(filename, ¶ms)
並將參數的x和y設置爲圖像大小。 opj_setup_encoder(encoder, ¶ms, image)
成功返回,但下面的代碼:OpenJPEG的opj_encode是段錯誤
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);
感謝
UPDATE
我已經想通了,opj_encode
是賽格斷層,因爲opj_start_compress失敗。它會因錯誤「分辨率的數量與平鋪的大小相比太高」而失敗。我輸入了params.numresolution = 1;
(0導致malloc錯誤),但我仍然得到相同的錯誤。任何想法爲什麼opj_start_compress
會失敗?