Turn on calculating of image statistics

This commit is contained in:
2019-09-27 12:18:14 +02:00
parent 3c1f7b23ae
commit f968d0eab2
6 changed files with 63 additions and 18 deletions
+24 -11
View File
@@ -7,9 +7,10 @@
#include <fitsio2.h>
#include "rawimage.h"
LoadRunable::LoadRunable(const QString &file, Image *receiver) :
LoadRunable::LoadRunable(const QString &file, Image *receiver, bool stats) :
m_file(file),
m_receiver(receiver)
m_receiver(receiver),
m_calculateStats(stats)
{
}
@@ -57,7 +58,7 @@ bool loadRAW(QString path, ImageInfoData &info, RawImageAbs **image, QImage *qi
out[d++] = p;
}
}
*image = new RawImage<uint16_t>(w, h, out);
*image = new RawImage<uint16_t>(rawdata.sizes.width, rawdata.sizes.height, out);
}
if(qimage)
@@ -199,21 +200,19 @@ void LoadRunable::run()
QFileInfo finfo(m_file);
info.append(StringPair(QObject::tr("Filename"), finfo.fileName()));
QImage img;
RawImageAbs *rawImage = nullptr;
if(m_file.endsWith(".CR2", Qt::CaseInsensitive))
{
QImage img;
loadRAW(m_file, info, nullptr, &img);
QMetaObject::invokeMethod(m_receiver, "imageLoaded", Qt::QueuedConnection, Q_ARG(QImage, img), Q_ARG(ImageInfoData, info));
loadRAW(m_file, info, m_calculateStats ? &rawImage : nullptr, &img);
}
else if(m_file.endsWith(".FIT", Qt::CaseInsensitive))
{
QImage img;
if(loadFITS(m_file, info, nullptr, &img))
QMetaObject::invokeMethod(m_receiver, "imageLoaded", Qt::QueuedConnection, Q_ARG(QImage, img), Q_ARG(ImageInfoData, info));
loadFITS(m_file, info, m_calculateStats ? &rawImage : nullptr, &img);
}
else
{
QImage img(m_file);
img = QImage(m_file);
ExifData *exif = exif_data_new_from_file(m_file.toLocal8Bit().constData());
info.append(StringPair(QObject::tr("Width"), QString::number(img.width())));
info.append(StringPair(QObject::tr("Height"), QString::number(img.height())));
@@ -221,7 +220,21 @@ void LoadRunable::run()
{
loadExifEntry(info, exif->ifd[EXIF_IFD_EXIF], EXIF_TAG_ISO_SPEED_RATINGS);
loadExifEntry(info, exif->ifd[EXIF_IFD_EXIF], EXIF_TAG_SHUTTER_SPEED_VALUE);
exif_data_free(exif);
}
QMetaObject::invokeMethod(m_receiver, "imageLoaded", Qt::QueuedConnection, Q_ARG(QImage, img), Q_ARG(ImageInfoData, info));
}
if(rawImage)
{
uint64_t mean, median, min, max;
double stdDev;
rawImage->imageStats(&mean, &stdDev, &median, &min, &max);
info.append(StringPair(QObject::tr("Mean"), QString::number(mean)));
info.append(StringPair(QObject::tr("Standart deviation"), QString::number(stdDev)));
info.append(StringPair(QObject::tr("Median"), QString::number(median)));
info.append(StringPair(QObject::tr("Minimum"), QString::number(min)));
info.append(StringPair(QObject::tr("Maximum"), QString::number(max)));
}
QMetaObject::invokeMethod(m_receiver, "imageLoaded", Qt::QueuedConnection, Q_ARG(QImage, img), Q_ARG(ImageInfoData, info));
}