Сбой opj_encode для OpenJPEG

Я новичок в OpenJPEG и пытаюсь использовать его библиотеки для создания приложения на c ++, которое принимает файлы изображений и кодирует их в формат J2k. Я создаю параметры по умолчанию, opj_set_default_encoder_parameters(&params) и установите значение выходного файла. Используя эти параметры, я создаю изображение 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);

Я получаю сигнал об ошибке 11 seg в функции opj_encode.

Я думаю, что я не устанавливаю важный параметр, но я не могу найти ничего, чтобы указать, каким параметром это может быть. Какой параметр это может быть?

Также может быть, что я неправильно создаю объект потока, 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

Решение

Я просто назвал это ответом. opj_encode терпит неудачу, потому что opj_start_compress не удается. Ввод чека, чтобы проверить успех opj_start_compress перед кодированием исправлена ​​ошибка сегмента.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]