updated refresh rate (each second)

Fixed not connected signals/slots

git-svn-id: http://find-object.googlecode.com/svn/trunk/find_object@40 620bd6b2-0a58-f614-fd9a-1bd335dccda9
This commit is contained in:
matlabbe 2011-11-23 19:12:41 +00:00
parent 13f493aa5c
commit b1b769ec78
2 changed files with 27 additions and 7 deletions

View File

@ -26,7 +26,8 @@
// Camera ownership transferred
MainWindow::MainWindow(Camera * camera, QWidget * parent) :
QMainWindow(parent),
camera_(camera)
camera_(camera),
lowestRefreshRate_(99)
{
ui_ = new Ui_mainWindow();
ui_->setupUi(this);
@ -63,11 +64,13 @@ MainWindow::MainWindow(Camera * camera, QWidget * parent) :
// Actions
connect(ui_->actionAdd_object, SIGNAL(triggered()), this, SLOT(addObject()));
connect(ui_->actionStart_camera, SIGNAL(triggered()), this, SLOT(startCamera()));
connect(ui_->actionStart_camera, SIGNAL(triggered()), this, SLOT(startProcessing()));
connect(ui_->actionStop_camera, SIGNAL(triggered()), this, SLOT(stopProcessing()));
connect(ui_->actionExit, SIGNAL(triggered()), this, SLOT(close()));
connect(ui_->actionSave_objects, SIGNAL(triggered()), this, SLOT(saveObjects()));
connect(ui_->actionLoad_objects, SIGNAL(triggered()), this, SLOT(loadObjects()));
startProcessing();
}
MainWindow::~MainWindow()
@ -162,12 +165,13 @@ void MainWindow::removeObject(ObjWidget * object)
void MainWindow::addObject()
{
this->stopProcessing();
disconnect(camera_, SIGNAL(imageReceived(const cv::Mat &)), this, SLOT(update(const cv::Mat &)));
AddObjectDialog dialog(camera_, &objects_, this);
if(dialog.exec() == QDialog::Accepted)
{
showObject(objects_.last());
}
this->startProcessing();
}
void MainWindow::showObject(ObjWidget * obj)
@ -500,5 +504,17 @@ void MainWindow::update(const cv::Mat & image)
ui_->label_timeGui->setText(QString::number(time.restart()));
}
ui_->label_detectorDescriptorType->setText(QString("%1/%2").arg(Settings::currentDetectorType()).arg(Settings::currentDescriptorType()));
ui_->label_timeRefreshRate->setText(QString("(%1 Hz - %2 Hz)").arg(QString::number(Settings::getCamera_imageRate().toInt())).arg(QString::number(int(1000.0f/(float)(updateRate_.restart()) + 1))));
int refreshRate = qRound(1000.0f/float(updateRate_.restart()));
if(refreshRate > 0 && refreshRate < lowestRefreshRate_)
{
lowestRefreshRate_ = refreshRate;
}
// Refresh the label only after each 1000 ms
if(refreshStartTime_.elapsed() > 1000)
{
ui_->label_timeRefreshRate->setText(QString("(%1 Hz - %2 Hz)").arg(QString::number(Settings::getCamera_imageRate().toInt())).arg(QString::number(lowestRefreshRate_)));
lowestRefreshRate_ = 99;
refreshStartTime_.start();
}
}

View File

@ -28,15 +28,18 @@ public:
void loadObjects(const QString & fileName);
void saveObjects(const QString & fileName);
void startProcessing();
void stopProcessing();
protected:
virtual void closeEvent(QCloseEvent * event);
public slots:
void startProcessing();
void stopProcessing();
private slots:
void loadObjects();
void saveObjects();
void addObject();
void removeObject(ObjWidget * object);
void update(const cv::Mat & image);
@ -44,7 +47,6 @@ signals:
void objectsFound(const QMap<int, QPoint> &);
private:
void addObject();
void showObject(ObjWidget * obj);
void updateData();
@ -55,6 +57,8 @@ private:
cv::Mat dataTree_;
QList<int> dataRange_;
QTime updateRate_;
QTime refreshStartTime_;
int lowestRefreshRate_;
};