From 9b7ccdc20ddfbccc07bcf7f8d4787b7aa09f70e5 Mon Sep 17 00:00:00 2001
From: Nicolas Pope <nwpope@utu.fi>
Date: Mon, 20 May 2019 10:45:16 +0300
Subject: [PATCH] Config for cam res, crosshair and display right

---
 renderer/cpp/include/ftl/display.hpp |  3 ++-
 renderer/cpp/src/display.cpp         | 17 +++++++++++++++--
 vision/src/local.cpp                 |  8 ++++----
 vision/src/main.cpp                  |  2 +-
 4 files changed, 22 insertions(+), 8 deletions(-)

diff --git a/renderer/cpp/include/ftl/display.hpp b/renderer/cpp/include/ftl/display.hpp
index c60d5fc05..299009ed9 100644
--- a/renderer/cpp/include/ftl/display.hpp
+++ b/renderer/cpp/include/ftl/display.hpp
@@ -33,7 +33,8 @@ class Display {
 	explicit Display(nlohmann::json &config, std::string name);
 	~Display();
 	
-	bool render(const cv::Mat &rgb, const cv::Mat &depth, const cv::Mat &q);
+	inline bool render(const cv::Mat &rgb, const cv::Mat &depth, const cv::Mat &q) { render(rgb, cv::Mat(), q); }
+	bool render(const cv::Mat &rgb, const cv::Mat &rgbr, const cv::Mat &depth, const cv::Mat &q);
 
 #if defined HAVE_PCL
 	bool render(pcl::PointCloud<pcl::PointXYZRGB>::ConstPtr);
diff --git a/renderer/cpp/src/display.cpp b/renderer/cpp/src/display.cpp
index acedcbe37..671fc32a7 100644
--- a/renderer/cpp/src/display.cpp
+++ b/renderer/cpp/src/display.cpp
@@ -77,7 +77,7 @@ Display::~Display() {
 	#endif  // HAVE_VIZ
 }
 
-bool Display::render(const cv::Mat &rgb, const cv::Mat &depth, const cv::Mat &q) {
+bool Display::render(const cv::Mat &rgb, const cv::Mat &rgbr, const cv::Mat &depth, const cv::Mat &q) {
 	Mat idepth;
 
 	if (config_["points"] && q.rows != 0) {
@@ -117,7 +117,20 @@ bool Display::render(const cv::Mat &rgb, const cv::Mat &depth, const cv::Mat &q)
 	}
 
 	if (config_["left"]) {
-		cv::imshow("RGB: " + name_, rgb);
+		if (config_["crosshair"]) {
+			cv::line(rgb, cv::Point(0, rgb.rows/2), cv::Point(rgb.cols-1, rgb.rows/2), cv::Scalar(0,0,255), 1);
+            cv::line(rgb, cv::Point(rgb.cols/2, 0), cv::Point(rgb.cols/2, rgb.rows-1), cv::Scalar(0,0,255), 1);
+		}
+		cv::namedWindow("Left: " + name_, cv::WINDOW_KEEPRATIO);
+		cv::imshow("Left: " + name_, rgb);
+	}
+	if (config_["right"]) {
+		if (config_["crosshair"]) {
+			cv::line(rgbr, cv::Point(0, rgbr.rows/2), cv::Point(rgbr.cols-1, rgbr.rows/2), cv::Scalar(0,0,255), 1);
+            cv::line(rgbr, cv::Point(rgbr.cols/2, 0), cv::Point(rgbr.cols/2, rgbr.rows-1), cv::Scalar(0,0,255), 1);
+		}
+		cv::namedWindow("Right: " + name_, cv::WINDOW_KEEPRATIO);
+		cv::imshow("Right: " + name_, rgbr);
 	}
 
 	if (config_["depth"]) {
diff --git a/vision/src/local.cpp b/vision/src/local.cpp
index 34a507a90..f26bea1d3 100644
--- a/vision/src/local.cpp
+++ b/vision/src/local.cpp
@@ -58,10 +58,10 @@ LocalSource::LocalSource(nlohmann::json &config)
 		stereo_ = false;
 		LOG(WARNING) << "Not able to find second camera for stereo";
 	} else {
-		camera_a_->set(cv::CAP_PROP_FRAME_WIDTH,1280);
-		camera_a_->set(cv::CAP_PROP_FRAME_HEIGHT,720);
-		camera_b_->set(cv::CAP_PROP_FRAME_WIDTH,1280);
-		camera_b_->set(cv::CAP_PROP_FRAME_HEIGHT,720);
+		camera_a_->set(cv::CAP_PROP_FRAME_WIDTH,(int)config["width"]);
+		camera_a_->set(cv::CAP_PROP_FRAME_HEIGHT,(int)config["height"]);
+		camera_b_->set(cv::CAP_PROP_FRAME_WIDTH,(int)config["width"]);
+		camera_b_->set(cv::CAP_PROP_FRAME_HEIGHT,(int)config["height"]);
 
 		Mat frame;
 		camera_a_->grab();
diff --git a/vision/src/main.cpp b/vision/src/main.cpp
index c0524da03..49d3f43db 100644
--- a/vision/src/main.cpp
+++ b/vision/src/main.cpp
@@ -184,7 +184,7 @@ static void run(const string &file) {
 		});
 
 		// Send RGB+Depth images for local rendering
-		if (pl.rows > 0) display.render(pl, pdisp, Q_32F);
+		if (pl.rows > 0) display.render(pl, r, pdisp, Q_32F);
 		display.wait(1);
 
 		// Wait for both pipelines to complete
-- 
GitLab