31#include <exiv2/exiv2.hpp>
43#if defined EXIV2_VERSION && EXIV2_TEST_VERSION(0,28,0)
44 value =
itr->toInt64();
46 value =
itr->toLong();
61 value =
itr->toFloat();
75 value =
itr->toString();
90 for(
long i=0;
i<
itr->count();
i++)
92 values.push_back(
itr->toFloat(
i));
107 value =
itr->toString();
121 value =
itr->toFloat();
134 return it->toFloat();
155 return std::string(
"");
165 return std::string(
"");
172#if defined EXIV2_VERSION && EXIV2_TEST_VERSION(0,28,0)
173 return it->toInt64();
193 Exiv2::ExifData::iterator
lat =
exifData.findKey(Exiv2::ExifKey(
"Exif.GPSInfo.GPSLatitude"));
194 Exiv2::ExifData::iterator
latRef =
exifData.findKey(Exiv2::ExifKey(
"Exif.GPSInfo.GPSLatitudeRef"));
199 if (
lat->value().typeId() == Exiv2::unsignedRational)
203 for (
int i = 0;
i <
lat->value().count();
i++)
205 value +=
lat->value().toFloat(
i) / denom;
208 if (
latRef->toString() ==
"S")
221 Exiv2::ExifData::iterator
longitudeTag =
exifData.findKey(Exiv2::ExifKey(
"Exif.GPSInfo.GPSLongitude"));
222 Exiv2::ExifData::iterator
longitudeRef =
exifData.findKey(Exiv2::ExifKey(
"Exif.GPSInfo.GPSLongitudeRef"));
227 if (
longitudeTag->value().typeId() == Exiv2::unsignedRational)
250 std::cout <<
itr->value() <<
" (" <<
itr->typeName() <<
", size: " <<
itr->count() <<
")" << std::endl;
254 for(
long i=0;
i<
itr->count();
i++)
256 std::cout <<
itr->toFloat(
i) <<
",";
258 std::cout <<
"]" << std::endl;
268 std::vector<float> values;
299#if defined EXIV2_VERSION && EXIV2_VERSION >= EXIV2_MAKE_VERSION(0,23,0)
334 if(values[0]!=0 && values[1]!=0)
355 if(values[0]!=0 && values[1]!=0)
375 if(values[0]!=0 && values[1]!=0 && values[2]!=0 && values[3]!=0)
395 if(values[0]!=0 && values[1]!=0 && values[2]!=0 && values[3]!=0)
415 if(values[0]!=0 && values[1]!=0 && values[2]!=0 && values[3]!=0)
435 if(values[0]!=0 && values[1]!=0 && values[2]!=0 && values[3]!=0)
455 if(values[0]!=0 && values[1]!=0 && values[2]!=0 && values[3]!=0)
584 cropFactor =
sqrt(36.0*36.0+24.0*24.0) /
609 cropFactor =
sqrt(36.0*36.0+24.0*24.0) /
olyFPD;
618 cropFactor =
sqrt(36.0*36.0+24.0*24.0) /
olyFPD;
630#if defined EXIV2_VERSION && EXIV2_VERSION >= EXIV2_MAKE_VERSION(0,22,0)
645 Exiv2::ExifData::const_iterator
itr2 = Exiv2::lensName(
exifData);
663 return std::string(
"");
helper functions to work with Exif data via the exiv2 library
misc math function & classes used by other parts of the program
const std::string getExiv2ValueString(Exiv2::ExifData &exifData, Exiv2::ExifData::const_iterator it)
bool getExiv2GPSLongitude(Exiv2::ExifData &exifData, double &longitude)
const double getCropFactor(Exiv2::ExifData &exifData, long width, long height)
bool getExiv2GPSLatitude(Exiv2::ExifData &exifData, double &latitude)
const double getExiv2ValueDouble(Exiv2::ExifData &exifData, Exiv2::ExifData::const_iterator it)
const long getExiv2ValueLong(Exiv2::ExifData &exifData, Exiv2::ExifData::const_iterator it)
bool _getExiv2Value(Exiv2::ExifData &exifData, std::string keyName, long &value)
const std::string getLensName(Exiv2::ExifData &exifData)
void PrintTag(Exiv2::ExifData::iterator itr)
bool readRedBlueBalance(Exiv2::ExifData &exifData, double &redBalance, double &blueBalance)
mainly consists of wrapper around the pano tools library, to assist in ressource management and to pr...
std::string StrTrim(const std::string &str)
remove trailing and leading white spaces and tabs
std::vector< deghosting::BImagePtr > threshold(const std::vector< deghosting::FImagePtr > &inputImages, const double threshold, const uint16_t flags)
Threshold function used for creating alpha masks for images.