Я ищу решение для сравнения изображений для разных целей.
Чтобы можно было анализировать, мне нужен доступ к значениям каждого пиксельного канала.
Например: формат RAW, который поддерживается многими камерами.
*
Есть ли библиотека с открытым исходным кодом, чтобы получить доступ к каналам,
или можно извлечь его непосредственно как байтовые значения?
*
В настоящее время я использую bitmap_image reader (https://github.com/ArashPartow/bitmap), но не очень хорошая идея конвертировать каждый раз необработанное изображение для BMP для анализа. репо добавлено в github, это своего рода библиотека, написанная на C ++ 14
Пожалуйста, предложите самый быстрый способ доступа к данным изображения, спасибо.
использование 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
формат Вот)
и разработать код, чтобы прочитать его, а затем просто конвертировать все и вся в PPM
отформатировать с ImageMagick и прочитайте это, что даст вам размеры в начале:
magick image.nef -depth 16 ppm:-
magick image.cr2 -depth 8 ppm:-
Обратите внимание, что это именно та стратегия, принятая CImg.
Других решений пока нет …