114 lines
3 KiB
C++
114 lines
3 KiB
C++
#include "statsview.h"
|
|
#include "ui_statsview.h"
|
|
|
|
StatsView::StatsView(QWidget *parent)
|
|
: QDialog(parent)
|
|
, ui(new Ui::StatsView)
|
|
{
|
|
ui->setupUi(this);
|
|
|
|
connect(ui->closeButton, &QPushButton::clicked, this, &QDialog::close);
|
|
|
|
ui->live_view->setScaledContents(1);
|
|
ui->avg_view->setScaledContents(1);
|
|
histogramm = new BarChart(ui->histogramm);
|
|
}
|
|
|
|
StatsView::~StatsView()
|
|
{
|
|
delete ui;
|
|
}
|
|
|
|
void StatsView::vis_new_batch_view(cv::Mat *img)
|
|
{
|
|
if(cur_batch_vis != nullptr)
|
|
delete cur_batch_vis;
|
|
cur_batch_vis = img;
|
|
|
|
ui->live_view->setPixmap(QPixmap::fromImage(QImage((uchar*)img->data, img->cols, img->rows, QImage::Format_Grayscale8)));
|
|
ui->live_view->setText("");
|
|
}
|
|
|
|
void StatsView::vis_new_avg_view(cv::Mat *img)
|
|
{
|
|
ui->avg_view->setPixmap(QPixmap::fromImage(QImage((uchar*)img->data, img->cols, img->rows, QImage::Format_Grayscale8)));
|
|
ui->avg_view->setText("");
|
|
}
|
|
|
|
CountChart::CountChart(QChartView *view)
|
|
:chartView(view)
|
|
{
|
|
//series.append(0,6);
|
|
//series.append(2,4);
|
|
|
|
chartView->chart()->addSeries(&series);
|
|
axisX.setRange(0,10);
|
|
axisY.setRange(0,10);
|
|
axisX.setTitleText("Frame");
|
|
axisY.setTitleText("Counts");
|
|
|
|
chartView->chart()->addAxis(&axisY, Qt::AlignLeft);
|
|
chartView->chart()->addAxis(&axisX, Qt::AlignBottom);
|
|
series.attachAxis(&axisX);
|
|
series.attachAxis(&axisY);
|
|
|
|
chartView->chart()->legend()->hide();
|
|
chartView->chart()->setTitle("Counts per Frame");
|
|
}
|
|
|
|
BarChart::BarChart(QChartView *view)
|
|
:chartView(view)
|
|
{
|
|
sets.append(new QBarSet{"Last batch"});
|
|
sets.append(new QBarSet{"Avg. over batches"});
|
|
|
|
|
|
QStringList categories;
|
|
for(int i = 0; i<10; i++)
|
|
{
|
|
categories << QString("%1").arg(i);
|
|
sets.barSets().at(0)->append(0);
|
|
sets.barSets().at(1)->append(0);
|
|
}
|
|
categories.last() = "9+";
|
|
|
|
chartView->chart()->addSeries(&sets);
|
|
chartView->chart()->setTitle("Distribution of Counts per frame");
|
|
//chartView->chart()->setAnimationOptions(QChart::SeriesAnimations);
|
|
|
|
// Axis
|
|
axisX.append(categories);
|
|
chartView->chart()->addAxis(&axisX, Qt::AlignBottom);
|
|
sets.attachAxis(&axisX);
|
|
|
|
axisY.setRange(0,100);
|
|
chartView->chart()->addAxis(&axisY, Qt::AlignLeft);
|
|
sets.attachAxis(&axisY);
|
|
|
|
chartView->chart()->legend()->setVisible(1);
|
|
chartView->chart()->legend()->setAlignment(Qt::AlignBottom);
|
|
}
|
|
|
|
void BarChart::new_batch_data(quint64 distr[10])
|
|
{
|
|
for(int i = 0; i<10; i++)
|
|
{
|
|
// New set
|
|
sets.barSets().at(0)->remove(i);
|
|
sets.barSets().at(0)->insert(i, distr[i]);
|
|
|
|
// Avg
|
|
if(n_since_res == 0)
|
|
{
|
|
sets.barSets().at(1)->remove(i);
|
|
sets.barSets().at(1)->insert(i, distr[i]);
|
|
}
|
|
else
|
|
{
|
|
float val = sets.barSets().at(1)->at(i);
|
|
sets.barSets().at(1)->remove(i);
|
|
sets.barSets().at(1)->insert(i, (val * n_since_res + (float)distr[i]) / (float)(n_since_res + 1) );
|
|
}
|
|
}
|
|
n_since_res++;
|
|
}
|