Используйте ImageMagick , который установлен в большинстве дистрибутивов Linux и доступен для macOS и Windows.
В командной строке:
# Convert NEF raw file to 16-bit RGB data
magick image.nef -depth 16 rgb:image.bin
# Convert CR2 raw file to 8-bit RGB data
magick image.cr2 -depth 8 rgb:image.bin
Или используйте его с popen()
в C / C ++ и напишите на stdout
:
magick image.dng -depth 16 rgb:-
, а затем читать на C / C ++.
Если вы хотите определить размеры изображения перед чтением:
magick identify temp.png
temp.png PNG 640x480 640x480+0+0 8-bit Gray 2c 12348B 0.000u 0:00.009
Если используется версия 6, заменить magick
на convert
и заменить magick identify
на identify
.
В качестве альтернативы посмотрите на формат NetPBM PPM
(см. P6
format здесь )
и разработайте некоторый код для его чтения, а затем просто конвертируйте все и вся в формат PPM
с помощью ImageMagick и читайте его, что дает вам размеры в начале:
magick image.nef -depth 16 ppm:-
magick image.cr2 -depth 8 ppm:-
Обратите внимание, что это именно та стратегия, принятая CImg .