Я использую Canon EOS 1200D.
Эта камера создает файлы JPEG с разрешением 5184 x 3456.
Камера создает также файлы CR2.
Я использую LibRaw, чтобы открыть этот файл.
LibRaw processor;
processor.open_file("test1.CR2");
Если я отлаживаю свою программу, я вижу:
processor.imgdata.sizes.raw_height = 3516
processor.imgdata.sizes.raw_width = 5344
processor.imgdata.sizes.height = 3465
processor.imgdata.sizes.width = 5202
processor.imgdata.sizes.top_margin = 51
processor.imgdata.sizes.left_margin = 142
processor.imgdata.sizes.iheight = 3465
processor.imgdata.sizes.iwidth = 5202
1 / Почему не отображается разрешение 5184 x 3456?
Я также вижу четыре объекта:
процессор.tiff_ifd как это:
[0] {t_width=5184 t_height=3456 bps=8 ...}
[1] {t_width=160 t_height=120 bps=8 ...}
[2] {t_width=668 t_height=432 bps=16 ...}
[3] {t_width=5344 t_height=3516 bps=14 ...}
2 / Что означают эти четыре объекта?
3 / Я не понимаю, что такое утверждение:
processor.unpack();
делать.
Преобразует ли он формат RGBG в формат RGB?
Теперь я хотел бы создать cv :: Mat с разрешением 5184 x 3456 и без потери точности.
4 / Так как же мне преобразовать мой файл CR2 в cv :: Mat с форматом CV_16UC3?
Из нескольких файлов CR2 я хотел бы создать новое изображение со средним значением.
5 / Итак, когда у меня есть cv :: Mat с форматом CV_16UC3, как я могу сохранить его в файл без потери точности?
Спасибо.
РЕДАКТИРОВАТЬ
Итак, я должен использовать:
processor.imgdata.params.output_bps = 16;
processor.open_file("test1.CR2");
processor.unpack();
processor.dcraw_process();
libraw_processed_image_t* output = processor.dcraw_make_mem_image();
Но как я могу указать, чтобы использовать разрешение JPEG?
Я думаю, что это с:
processor.imgdata.params.cropbox
а как указать разрешение JPEG без жесткого кодирования?
Пожалуйста, обратитесь к документации LibRAW.
unpack
Метод только распаковывает данные из необработанного формата файла без демозаики. Это все те же необработанные данные. Чтобы получить данные RGB, обратитесь к разделу «Постобработка» в документации, особенно dcraw_process
Других решений пока нет …