Skip to content
Snippets Groups Projects
Commit 9a0dc990 authored by Nicolas Pope's avatar Nicolas Pope
Browse files

Add support for showing depth

parent e740f2be
No related branches found
No related tags found
1 merge request!23Feature/gui implements #53
Pipeline #11253 passed
...@@ -36,38 +36,6 @@ class FTLApplication : public nanogui::Screen { ...@@ -36,38 +36,6 @@ class FTLApplication : public nanogui::Screen {
using namespace nanogui; using namespace nanogui;
net_ = net; net_ = net;
/*for (auto &src : root->getConfig()["sources"]) {
RGBDSource *in = ftl::rgbd::RGBDSource::create(src, net); //new ftl::rgbd::NetSource(src, &net);
if (!in) {
LOG(ERROR) << "Unrecognised source: " << src;
} else {
//auto &cam = sources_.emplace_back();
//cam.source = in;
auto imageWindow = new Window(this, *in->get<string>("uri"));
imageWindow->setPosition(Eigen::Vector2i(710, 15));
imageWindow->setLayout(new GroupLayout());
imageWindow->setSize(Vector2i(400,400));
new Label(imageWindow, "Select source","sans-bold");
auto available = net->findAll<string>("list_streams");
auto select = new ComboBox(imageWindow, available);
select->setCallback([this,available](int ix) {
LOG(INFO) << "Change source: " << ix;
});
auto imageView = new VirtualCameraView(imageWindow);
//cam.view = imageView;
imageView->setGridThreshold(20);
imageView->setSource(in);
//imageView->setPixelInfoThreshold(20);
//displays.emplace_back(config["display"], src["uri"]);
LOG(INFO) << (string)src["uri"] << " loaded ";
}
}*/
auto cwindow = new ftl::gui::ControlWindow(this, controller); auto cwindow = new ftl::gui::ControlWindow(this, controller);
auto swindow = new ftl::gui::SourceWindow(this, controller); auto swindow = new ftl::gui::SourceWindow(this, controller);
...@@ -95,7 +63,12 @@ int main(int argc, char **argv) { ...@@ -95,7 +63,12 @@ int main(int argc, char **argv) {
ftl::ctrl::Master controller(root, net); ftl::ctrl::Master controller(root, net);
controller.onLog([](const ftl::ctrl::LogEvent &e){ controller.onLog([](const ftl::ctrl::LogEvent &e){
LOG(INFO) << "Remote log: " << e.message; const int v = e.verbosity;
switch (v) {
case -2: LOG(ERROR) << "Remote log: " << e.message; break;
case -1: LOG(WARNING) << "Remote log: " << e.message; break;
case 0: LOG(INFO) << "Remote log: " << e.message; break;
}
}); });
/*auto available = net.findAll<string>("list_streams"); /*auto available = net.findAll<string>("list_streams");
......
...@@ -77,6 +77,7 @@ class VirtualCameraView : public nanogui::ImageView { ...@@ -77,6 +77,7 @@ class VirtualCameraView : public nanogui::ImageView {
up_ = Eigen::Vector3f(0,1.0f,0); up_ = Eigen::Vector3f(0,1.0f,0);
lookPoint_ = Eigen::Vector3f(0.0f,0.0f,-4.0f); lookPoint_ = Eigen::Vector3f(0.0f,0.0f,-4.0f);
lerpSpeed_ = 0.4f; lerpSpeed_ = 0.4f;
depth_ = false;
} }
void setSource(RGBDSource *src) { src_ = src; } void setSource(RGBDSource *src) { src_ = src; }
...@@ -114,16 +115,29 @@ class VirtualCameraView : public nanogui::ImageView { ...@@ -114,16 +115,29 @@ class VirtualCameraView : public nanogui::ImageView {
src_->setPose(viewPose); src_->setPose(viewPose);
src_->grab(); src_->grab();
src_->getRGBD(rgb, depth); src_->getRGBD(rgb, depth);
if (depth_) {
if (depth.rows > 0) {
cv::Mat idepth;
depth.convertTo(idepth, CV_8U, 255.0f / 10.0f); // TODO(nick)
applyColorMap(idepth, idepth, cv::COLORMAP_JET);
texture_.update(idepth);
bindImage(texture_.texture());
}
} else {
if (rgb.rows > 0) { if (rgb.rows > 0) {
texture_.update(rgb); texture_.update(rgb);
bindImage(texture_.texture()); bindImage(texture_.texture());
} }
}
screen()->performLayout(ctx); screen()->performLayout(ctx);
} }
ImageView::draw(ctx); ImageView::draw(ctx);
} }
void setDepth(bool d) { depth_ = d; }
private: private:
RGBDSource *src_; RGBDSource *src_;
GLTexture texture_; GLTexture texture_;
...@@ -132,6 +146,7 @@ class VirtualCameraView : public nanogui::ImageView { ...@@ -132,6 +146,7 @@ class VirtualCameraView : public nanogui::ImageView {
Eigen::Vector3f up_; Eigen::Vector3f up_;
Eigen::Vector3f lookPoint_; Eigen::Vector3f lookPoint_;
float lerpSpeed_; float lerpSpeed_;
bool depth_;
}; };
SourceWindow::SourceWindow(nanogui::Widget *parent, ftl::ctrl::Master *ctrl) SourceWindow::SourceWindow(nanogui::Widget *parent, ftl::ctrl::Master *ctrl)
...@@ -142,18 +157,30 @@ SourceWindow::SourceWindow(nanogui::Widget *parent, ftl::ctrl::Master *ctrl) ...@@ -142,18 +157,30 @@ SourceWindow::SourceWindow(nanogui::Widget *parent, ftl::ctrl::Master *ctrl)
src_ = ftl::create<ftl::rgbd::NetSource>(ctrl->getRoot(), "source", ctrl->getNet()); src_ = ftl::create<ftl::rgbd::NetSource>(ctrl->getRoot(), "source", ctrl->getNet());
new Label(this, "Select source","sans-bold"); Widget *tools = new Widget(this);
tools->setLayout(new BoxLayout(Orientation::Horizontal,
Alignment::Middle, 0, 6));
new Label(tools, "Select source","sans-bold");
auto available = ctrl->getNet()->findAll<string>("list_streams"); auto available = ctrl->getNet()->findAll<string>("list_streams");
auto select = new ComboBox(this, available); auto select = new ComboBox(tools, available);
select->setCallback([this,available](int ix) { select->setCallback([this,available](int ix) {
LOG(INFO) << "Change source: " << ix; LOG(INFO) << "Change source: " << ix;
src_->set("uri", available[ix]); src_->set("uri", available[ix]);
}); });
auto depth = new Button(tools, "Depth");
depth->setFlags(Button::ToggleButton);
depth->setChangeCallback([this](bool state) {
image_->setDepth(state);
});
auto imageView = new VirtualCameraView(this); auto imageView = new VirtualCameraView(this);
//cam.view = imageView; //cam.view = imageView;
imageView->setGridThreshold(20); imageView->setGridThreshold(20);
imageView->setSource(src_); imageView->setSource(src_);
image_ = imageView;
} }
SourceWindow::~SourceWindow() { SourceWindow::~SourceWindow() {
......
...@@ -6,6 +6,8 @@ ...@@ -6,6 +6,8 @@
#include <ftl/uuid.hpp> #include <ftl/uuid.hpp>
#include <ftl/net_source.hpp> #include <ftl/net_source.hpp>
class VirtualCameraView;
namespace ftl { namespace ftl {
namespace gui { namespace gui {
...@@ -20,6 +22,7 @@ class SourceWindow : public nanogui::Window { ...@@ -20,6 +22,7 @@ class SourceWindow : public nanogui::Window {
private: private:
ftl::ctrl::Master *ctrl_; ftl::ctrl::Master *ctrl_;
ftl::rgbd::NetSource *src_; ftl::rgbd::NetSource *src_;
VirtualCameraView *image_;
}; };
......
...@@ -12,6 +12,7 @@ namespace ftl { ...@@ -12,6 +12,7 @@ namespace ftl {
namespace ctrl { namespace ctrl {
struct LogEvent { struct LogEvent {
int verbosity;
std::string preamble; std::string preamble;
std::string message; std::string message;
}; };
......
...@@ -12,9 +12,8 @@ using ftl::ctrl::LogEvent; ...@@ -12,9 +12,8 @@ using ftl::ctrl::LogEvent;
Master::Master(Configurable *root, Universe *net) Master::Master(Configurable *root, Universe *net)
: root_(root), net_(net) { : root_(root), net_(net) {
net->bind("log", [this](int v, const std::string &pre, const std::string &msg) { net->bind("log", [this](int v, const std::string &pre, const std::string &msg) {
LOG(INFO) << "RECEIVE LOG";
for (auto f : log_handlers_) { for (auto f : log_handlers_) {
f({pre,msg}); f({v,pre,msg});
} }
}); });
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment