Skip to content
Snippets Groups Projects
Commit 8355c3ef authored by Max Breitenfeldt's avatar Max Breitenfeldt
Browse files

Set model path via UI

parent 8f68612e
Branches
No related tags found
No related merge requests found
Pipeline #39511 failed
......@@ -29,7 +29,6 @@ BioTrackerTrackingAlgorithm::BioTrackerTrackingAlgorithm(IController *parent, IM
_lastImage = nullptr;
_lastFramenumber = -1;
start_python();
}
BioTrackerTrackingAlgorithm::~BioTrackerTrackingAlgorithm()
......@@ -75,11 +74,12 @@ void BioTrackerTrackingAlgorithm::stop_python() {
void BioTrackerTrackingAlgorithm::start_python() {
stop_python();
auto model_path = _TrackingParameter->getModelPath().toStdString();
_python_process = boost::process::child(
boost::process::search_path("python3"),
boost::process::args({
"-c", "from biotracker import BiotrackerAdapter;"
"BiotrackerAdapter('/home/max/tmp/example.multi_instance'"
"BiotrackerAdapter('" + model_path + "'"
",verbose=True).run();"
}), _python_process_group);
......@@ -92,6 +92,10 @@ void BioTrackerTrackingAlgorithm::receiveAreaDescriptorUpdate(IModelAreaDescript
}
void BioTrackerTrackingAlgorithm::receiveParametersChanged() {
if (_TrackingParameter->getModelPath() != NULL) {
start_python();
}
if (_lastFramenumber >= 0 && _lastImage && !_lastImage->empty()) {
doTracking(_lastImage, _lastFramenumber);
}
......@@ -107,6 +111,11 @@ void BioTrackerTrackingAlgorithm::doTracking(std::shared_ptr<cv::Mat> p_image, u
return;
}
// skip frame if model is not yet loaded
if (_python_process.has_value()) {
return;
}
if (_imageX != p_image->size().width || _imageY != p_image->size().height) {
_imageX = p_image->size().width;
_imageY = p_image->size().height;
......
......@@ -4,6 +4,7 @@
#include "Interfaces/IModel/IModel.h"
#include "../Config.h"
#include <optional>
class TrackerParameter : public IModel
{
......@@ -16,7 +17,15 @@ public:
_newSelection = x;
}
void setModelPath(QString x) {
_model_path = x;
Q_EMIT notifyView();
}
QString getModelPath() { return _model_path; };
private:
QString _model_path;
std::string _newSelection;
Config *_cfg;
......
......@@ -2,12 +2,26 @@
#include "ui_TrackerParameterView.h"
#include <iostream>
#include <QFileDialog>
#include <QString>
TrackerParameterView::TrackerParameterView(QWidget *parent, IController *controller, IModel *model) :
IViewWidget(parent, controller, model),
_ui(new Ui::TrackerParameterView)
{
_ui->setupUi(this);
QObject::connect(_ui->model_path_browse, SIGNAL(clicked()), this, SLOT(on_model_path_browse()));
}
void TrackerParameterView::on_model_path_browse() {
QString dir = QFileDialog::getExistingDirectory(this, tr("Choose Model"),
"/home",
QFileDialog::ShowDirsOnly
| QFileDialog::DontResolveSymlinks);
_ui->model_path_line->setText(dir);
TrackerParameter *parameter = qobject_cast<TrackerParameter *>(getModel());
parameter->setModelPath(dir);
Q_EMIT parametersChanged();
}
TrackerParameterView::~TrackerParameterView()
......
......@@ -21,6 +21,9 @@ public:
void trackingAreaType(int v);
void parametersChanged();
private slots:
void on_model_path_browse();
private:
Ui::TrackerParameterView *_ui;
......
......@@ -65,6 +65,52 @@
<property name="topMargin">
<number>0</number>
</property>
<item>
<widget class="QFrame" name="frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<widget class="QLineEdit" name="model_path_line">
<property name="geometry">
<rect>
<x>60</x>
<y>10</y>
<width>151</width>
<height>23</height>
</rect>
</property>
</widget>
<widget class="QLabel" name="model_path_label">
<property name="geometry">
<rect>
<x>10</x>
<y>10</y>
<width>41</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>Model</string>
</property>
</widget>
<widget class="QPushButton" name="model_path_browse">
<property name="geometry">
<rect>
<x>220</x>
<y>10</y>
<width>61</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>Browse</string>
</property>
</widget>
</widget>
</item>
</layout>
</widget>
</widget>
......@@ -72,5 +118,25 @@
</layout>
</widget>
<resources/>
<connections/>
<connections>
<connection>
<sender>model_path_browse</sender>
<signal>clicked()</signal>
<receiver>TrackerParameterView</receiver>
<slot>browseSlot()</slot>
<hints>
<hint type="sourcelabel">
<x>268</x>
<y>29</y>
</hint>
<hint type="destinationlabel">
<x>363</x>
<y>31</y>
</hint>
</hints>
</connection>
</connections>
<slots>
<slot>browseSlot()</slot>
</slots>
</ui>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment