auto add undistorted filter to pipeline after calibration
This commit is contained in:
parent
de953d0a6d
commit
e36e8e8a0e
4 changed files with 42 additions and 17 deletions
|
@ -95,12 +95,26 @@ Qt::ItemFlags FilterList::flags(const QModelIndex &index) const
|
|||
return flags;
|
||||
}
|
||||
|
||||
void FilterList::add(Filter *filter)
|
||||
void FilterList::append(Filter *filter)
|
||||
{
|
||||
beginInsertRows(QModelIndex(), size(), size());
|
||||
push_back(filter);
|
||||
QList<Filter*>::append(filter);
|
||||
endInsertRows();
|
||||
|
||||
add(filter);
|
||||
}
|
||||
|
||||
void FilterList::prepend(Filter *filter)
|
||||
{
|
||||
beginInsertRows(QModelIndex(), size(), size());
|
||||
QList<Filter*>::prepend(filter);
|
||||
endInsertRows();
|
||||
|
||||
add(filter);
|
||||
}
|
||||
|
||||
void FilterList::add(Filter *filter)
|
||||
{
|
||||
connect(filter, SIGNAL(filterChanged(Filter *)), this, SIGNAL(filterChanged(Filter *)));
|
||||
connect(filter, SIGNAL(filterApplied(Filter*)), this, SLOT(update(Filter *)));
|
||||
|
||||
|
|
|
@ -23,7 +23,8 @@ class FilterList :
|
|||
Qt::ItemFlags flags(const QModelIndex & index) const;
|
||||
bool setData(const QModelIndex &index, const QVariant &value, int role);
|
||||
|
||||
void add(Filter *filter);
|
||||
void prepend(Filter *filter);
|
||||
void append(Filter *filter);
|
||||
|
||||
Filter * getCurrent();
|
||||
|
||||
|
@ -38,6 +39,9 @@ class FilterList :
|
|||
void filterSelected(Filter *filter);
|
||||
void filterAdded(Filter *filter);
|
||||
void filterRemoved(Filter *filter);
|
||||
|
||||
protected:
|
||||
void add(Filter *filter);
|
||||
};
|
||||
|
||||
#endif // FILTERLIST_H
|
||||
|
|
22
main.cpp
22
main.cpp
|
@ -40,17 +40,17 @@ int main(int argc, char *argv[])
|
|||
PadFilter *filter = new PadFilter(pads);
|
||||
PathPlanner *planner = new PathPlanner(filter, PathPlanner::REPETETIVE_NEAREST_NEIGHBOUR);
|
||||
|
||||
filters->add(pattern);
|
||||
filters->add(new Perspective(cam, pattern));
|
||||
filters->add(new Resize(Range<int>(400, 1000)));
|
||||
filters->add(new Blur(Blur::GAUSSIAN, Size(3, 3)));
|
||||
filters->add(new KMeans(4));
|
||||
filters->add(new Convert(COLOR_BGR2GRAY));
|
||||
filters->add(new Threshold(Threshold::OTSU));
|
||||
filters->add(new Morph(MORPH_CLOSE, MORPH_RECT));
|
||||
filters->add(pads);
|
||||
filters->add(filter);
|
||||
filters->add(planner);
|
||||
filters->append(pattern);
|
||||
filters->append(new Perspective(cam, pattern));
|
||||
filters->append(new Resize(Range<int>(400, 1000)));
|
||||
filters->append(new Blur(Blur::GAUSSIAN, Size(3, 3)));
|
||||
filters->append(new KMeans(4));
|
||||
filters->append(new Convert(COLOR_BGR2GRAY));
|
||||
filters->append(new Threshold(Threshold::OTSU));
|
||||
filters->append(new Morph(MORPH_CLOSE, MORPH_RECT));
|
||||
filters->append(pads);
|
||||
filters->append(filter);
|
||||
filters->append(planner);
|
||||
|
||||
robot = new Robot(pattern, planner);
|
||||
mwindow = new MainWindow;
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#include <opencv2/core.hpp>
|
||||
|
||||
#include "filters/pattern.h"
|
||||
#include "filters/undistort.h"
|
||||
#include "mainwindow.h"
|
||||
#include "imagelist.h"
|
||||
#include "tabcalibration.h"
|
||||
|
@ -39,11 +40,17 @@ void TabCalibration::doCalibration()
|
|||
|
||||
Size size = Size(ui->spinBoardSizeX->value(), ui->spinBoardSizeY->value());
|
||||
Pattern *pattern = new Pattern(size, spacing, Pattern::Type(index));
|
||||
Undistort *undistort = new Undistort(cam);
|
||||
|
||||
filters->add(pattern);
|
||||
|
||||
if (cam->calibrate(images->getSelected(), pattern))
|
||||
if (cam->calibrate(images->getSelected(), pattern)) {
|
||||
filters->prepend(pattern);
|
||||
filters->prepend(undistort);
|
||||
showResults();
|
||||
}
|
||||
else {
|
||||
delete pattern;
|
||||
delete undistort;
|
||||
}
|
||||
}
|
||||
|
||||
void TabCalibration::resetCalibration()
|
||||
|
|
Loading…
Add table
Reference in a new issue