cr2 извлекает изображения с определенным фокусным расстоянием

У меня есть несколько файлов cr2.

Я хотел бы создать программу на C ++ или написать скрипт, который разделяет различные файлы cr2 с разными фокусными расстояниями и помещает их в отдельные каталоги.

Как я могу это сделать ?

У меня есть доступ к Canon EDSDK и LibRaw, но я не уверен, где найти информацию о фокусном расстоянии.

У меня также есть небольшая утилита «ExifTool», которая может читать метаданные — но я не знаю, как заставить его делать то, что я хочу — и версия с графическим интерфейсом, кажется, дает сбой при чтении 5000 файлов по сети …

Пожалуйста, кто-нибудь может дать мне предложение?

0

Решение

Спецификацию EXIF ​​можно найти здесь:

http://www.exif.org/specifications.html

Вам нужно будет прочитать данные EXIF ​​и найти запись, которая содержит «тег» 37386 или 0x920A. Затем следует число «RATIONAL», которое по существу представляет собой два целых числа без знака, образующих дробь, например 400/20 = 20 мм, как 80/5 или 20/1. Объектив 14,5 мм должен (как минимум) храниться как 29/2, но может храниться как 145/10 или 1450/100 — или большое количество других вариантов.

Конечно, если вы используете, например, ExifTool, вы можете легко сделать это с помощью скрипта или использовать привязку Perl для написания скрипта на Perl.

Существует также интерфейс C ++ для использования с exiftool:
http://owl.phy.queensu.ca/~phil/cpp_exiftool/

С использованием TagInfo что ты вернешься из ImageInfo(), должно быть возможно найти FocalLength и переместить файлы соответственно.

Я не собираюсь писать код для вас, но приведенная выше информация должна дать вам представление.

1

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

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

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