From bef2deef10e3993f6107f982a354be1c1b2df087 Mon Sep 17 00:00:00 2001
From: Nicolas Pope <nicolas.pope@utu.fi>
Date: Wed, 29 Jan 2020 14:47:46 +0200
Subject: [PATCH] Reduce OpenCV dependencies

---
 applications/calibration-multi/src/main.cpp                | 1 +
 applications/gui/src/camera.cpp                            | 3 +++
 applications/gui/src/gltexture.hpp                         | 2 +-
 applications/reconstruct/src/main.cpp                      | 2 +-
 applications/vision/include/ftl/streamer.hpp               | 2 +-
 components/codecs/include/ftl/codecs/decoder.hpp           | 2 +-
 components/codecs/include/ftl/codecs/encoder.hpp           | 2 +-
 components/codecs/src/opencv_decoder.cpp                   | 2 ++
 components/codecs/src/opencv_encoder.cpp                   | 2 ++
 components/codecs/test/nvpipe_codec_unit.cpp               | 2 ++
 components/codecs/test/opencv_codec_unit.cpp               | 2 ++
 components/operators/include/ftl/operators/disparity.hpp   | 2 ++
 components/operators/src/colours.cpp                       | 3 +++
 components/operators/src/disparity/fixstars_sgm.cpp        | 3 +++
 components/operators/src/nvopticalflow.cpp                 | 2 ++
 components/operators/src/smoothing.cpp                     | 2 ++
 components/renderers/cpp/src/tri_render.cpp                | 2 ++
 components/rgbd-sources/CMakeLists.txt                     | 2 +-
 components/rgbd-sources/include/ftl/rgbd/detail/source.hpp | 2 +-
 components/rgbd-sources/include/ftl/rgbd/frameset.hpp      | 2 +-
 components/rgbd-sources/include/ftl/rgbd/group.hpp         | 2 +-
 components/rgbd-sources/include/ftl/rgbd/snapshot.hpp      | 2 +-
 components/rgbd-sources/include/ftl/rgbd/source.hpp        | 2 +-
 components/rgbd-sources/src/colour.hpp                     | 2 +-
 components/rgbd-sources/src/disparity.hpp                  | 2 +-
 components/streams/src/receiver.cpp                        | 2 ++
 components/streams/src/sender.cpp                          | 2 ++
 27 files changed, 43 insertions(+), 13 deletions(-)

diff --git a/applications/calibration-multi/src/main.cpp b/applications/calibration-multi/src/main.cpp
index c45bb27cb..2af88278e 100644
--- a/applications/calibration-multi/src/main.cpp
+++ b/applications/calibration-multi/src/main.cpp
@@ -12,6 +12,7 @@
 #include <opencv2/core.hpp>
 #include <opencv2/aruco.hpp>
 #include <opencv2/core/eigen.hpp>
+#include <opencv2/opencv.hpp>
 
 #include <algorithm>
 #include <numeric>
diff --git a/applications/gui/src/camera.cpp b/applications/gui/src/camera.cpp
index 40f4757e2..25dab31d1 100644
--- a/applications/gui/src/camera.cpp
+++ b/applications/gui/src/camera.cpp
@@ -3,6 +3,9 @@
 #include "screen.hpp"
 #include <nanogui/glutil.h>
 
+#include <opencv2/imgproc.hpp>
+#include <opencv2/imgcodecs.hpp>
+
 #include <ftl/operators/antialiasing.hpp>
 
 #define LOGURU_REPLACE_GLOG 1
diff --git a/applications/gui/src/gltexture.hpp b/applications/gui/src/gltexture.hpp
index f83eabea2..88bf1a18b 100644
--- a/applications/gui/src/gltexture.hpp
+++ b/applications/gui/src/gltexture.hpp
@@ -1,7 +1,7 @@
 #ifndef _FTL_GUI_GLTEXTURE_HPP_
 #define _FTL_GUI_GLTEXTURE_HPP_
 
-#include <opencv2/opencv.hpp>
+#include <opencv2/core/mat.hpp>
 
 namespace ftl {
 namespace gui {
diff --git a/applications/reconstruct/src/main.cpp b/applications/reconstruct/src/main.cpp
index c7cc97fcd..f7ea721ad 100644
--- a/applications/reconstruct/src/main.cpp
+++ b/applications/reconstruct/src/main.cpp
@@ -28,7 +28,7 @@
 #include <thread>
 #include <chrono>
 
-#include <opencv2/opencv.hpp>
+//#include <opencv2/opencv.hpp>
 #include <ftl/net/universe.hpp>
 
 #include <ftl/operators/smoothing.hpp>
diff --git a/applications/vision/include/ftl/streamer.hpp b/applications/vision/include/ftl/streamer.hpp
index 0987633e4..71010362a 100644
--- a/applications/vision/include/ftl/streamer.hpp
+++ b/applications/vision/include/ftl/streamer.hpp
@@ -3,7 +3,7 @@
 
 #include <ftl/net/universe.hpp>
 #include <nlohmann/json.hpp>
-#include <opencv2/opencv.hpp>
+#include <opencv2/core/mat.hpp>
 #include <string>
 
 namespace ftl {
diff --git a/components/codecs/include/ftl/codecs/decoder.hpp b/components/codecs/include/ftl/codecs/decoder.hpp
index 5ebce8ed5..4af10e118 100644
--- a/components/codecs/include/ftl/codecs/decoder.hpp
+++ b/components/codecs/include/ftl/codecs/decoder.hpp
@@ -1,7 +1,7 @@
 #ifndef _FTL_CODECS_DECODER_HPP_
 #define _FTL_CODECS_DECODER_HPP_
 
-#include <opencv2/opencv.hpp>
+//#include <opencv2/opencv.hpp>
 #include <opencv2/core/cuda.hpp>
 #include <opencv2/core/cuda_stream_accessor.hpp>
 
diff --git a/components/codecs/include/ftl/codecs/encoder.hpp b/components/codecs/include/ftl/codecs/encoder.hpp
index 54b334a51..995a8216c 100644
--- a/components/codecs/include/ftl/codecs/encoder.hpp
+++ b/components/codecs/include/ftl/codecs/encoder.hpp
@@ -2,7 +2,7 @@
 #define _FTL_CODECS_ENCODER_HPP_
 
 #include <ftl/cuda_util.hpp>
-#include <opencv2/opencv.hpp>
+//#include <opencv2/core/mat.hpp>
 #include <opencv2/core/cuda.hpp>
 
 #include <ftl/codecs/codecs.hpp>
diff --git a/components/codecs/src/opencv_decoder.cpp b/components/codecs/src/opencv_decoder.cpp
index e08117ae2..809f716df 100644
--- a/components/codecs/src/opencv_decoder.cpp
+++ b/components/codecs/src/opencv_decoder.cpp
@@ -1,5 +1,7 @@
 #include <ftl/codecs/opencv_decoder.hpp>
 
+#include <opencv2/opencv.hpp>
+
 #include <loguru.hpp>
 
 using ftl::codecs::OpenCVDecoder;
diff --git a/components/codecs/src/opencv_encoder.cpp b/components/codecs/src/opencv_encoder.cpp
index 8edc1a616..152f05754 100644
--- a/components/codecs/src/opencv_encoder.cpp
+++ b/components/codecs/src/opencv_encoder.cpp
@@ -1,5 +1,7 @@
 #include <ftl/codecs/opencv_encoder.hpp>
 
+#include <opencv2/opencv.hpp>
+
 #include <loguru.hpp>
 #include <vector>
 
diff --git a/components/codecs/test/nvpipe_codec_unit.cpp b/components/codecs/test/nvpipe_codec_unit.cpp
index 9bb72b1a7..09a5b77dd 100644
--- a/components/codecs/test/nvpipe_codec_unit.cpp
+++ b/components/codecs/test/nvpipe_codec_unit.cpp
@@ -4,6 +4,8 @@
 #include <ftl/codecs/hevc.hpp>
 #include <ftl/threads.hpp>
 
+#include <opencv2/cudaarithm.hpp>
+
 using ftl::codecs::definition_t;
 using ftl::codecs::codec_t;
 using ftl::codecs::format_t;
diff --git a/components/codecs/test/opencv_codec_unit.cpp b/components/codecs/test/opencv_codec_unit.cpp
index ec3ec10c0..cf03f71a2 100644
--- a/components/codecs/test/opencv_codec_unit.cpp
+++ b/components/codecs/test/opencv_codec_unit.cpp
@@ -3,6 +3,8 @@
 #include <ftl/codecs/opencv_decoder.hpp>
 #include <ftl/threads.hpp>
 
+#include <opencv2/cudaarithm.hpp>
+
 using ftl::codecs::format_t;
 using ftl::codecs::definition_t;
 using ftl::codecs::codec_t;
diff --git a/components/operators/include/ftl/operators/disparity.hpp b/components/operators/include/ftl/operators/disparity.hpp
index f45fa244f..aaa52e60e 100644
--- a/components/operators/include/ftl/operators/disparity.hpp
+++ b/components/operators/include/ftl/operators/disparity.hpp
@@ -7,6 +7,8 @@
 #include <opencv2/cudaoptflow.hpp>
 #endif
 
+#include <opencv2/cudastereo.hpp>
+
 #ifdef HAVE_LIBSGM
 #include <libsgm.h>
 #endif
diff --git a/components/operators/src/colours.cpp b/components/operators/src/colours.cpp
index 4d8939f01..9d913e6f3 100644
--- a/components/operators/src/colours.cpp
+++ b/components/operators/src/colours.cpp
@@ -1,5 +1,8 @@
 #include <ftl/operators/colours.hpp>
 
+#include <opencv2/cudaimgproc.hpp>
+#include <opencv2/cudawarping.hpp>
+
 using ftl::operators::ColourChannels;
 using ftl::codecs::Channel;
 
diff --git a/components/operators/src/disparity/fixstars_sgm.cpp b/components/operators/src/disparity/fixstars_sgm.cpp
index 4d605f88a..ac81a56ce 100644
--- a/components/operators/src/disparity/fixstars_sgm.cpp
+++ b/components/operators/src/disparity/fixstars_sgm.cpp
@@ -2,6 +2,9 @@
 
 #include "ftl/operators/disparity.hpp"
 
+#include <opencv2/cudaimgproc.hpp>
+#include <opencv2/cudaarithm.hpp>
+
 using cv::Size;
 using cv::cuda::GpuMat;
 
diff --git a/components/operators/src/nvopticalflow.cpp b/components/operators/src/nvopticalflow.cpp
index 08da949e0..36c0161eb 100644
--- a/components/operators/src/nvopticalflow.cpp
+++ b/components/operators/src/nvopticalflow.cpp
@@ -1,5 +1,7 @@
 #include <ftl/operators/opticalflow.hpp>
 
+#include <opencv2/cudaimgproc.hpp>
+
 using ftl::rgbd::Frame;
 using ftl::rgbd::Source;
 using ftl::codecs::Channel;
diff --git a/components/operators/src/smoothing.cpp b/components/operators/src/smoothing.cpp
index 3f6862072..94eda1770 100644
--- a/components/operators/src/smoothing.cpp
+++ b/components/operators/src/smoothing.cpp
@@ -6,6 +6,8 @@
 
 #include <ftl/cuda/normals.hpp>
 
+#include <opencv2/cudawarping.hpp>
+
 using ftl::operators::HFSmoother;
 using ftl::operators::SimpleMLS;
 using ftl::operators::ColourMLS;
diff --git a/components/renderers/cpp/src/tri_render.cpp b/components/renderers/cpp/src/tri_render.cpp
index cb858313c..235481a50 100644
--- a/components/renderers/cpp/src/tri_render.cpp
+++ b/components/renderers/cpp/src/tri_render.cpp
@@ -8,6 +8,8 @@
 #define LOGURU_REPLACE_GLOG 1
 #include <loguru.hpp>
 
+#include <opencv2/imgcodecs.hpp>
+#include <opencv2/imgproc.hpp>
 #include <opencv2/core/cuda_stream_accessor.hpp>
 
 //#include <ftl/filters/smoothing.hpp>
diff --git a/components/rgbd-sources/CMakeLists.txt b/components/rgbd-sources/CMakeLists.txt
index 4001d5c1c..bc983d1f2 100644
--- a/components/rgbd-sources/CMakeLists.txt
+++ b/components/rgbd-sources/CMakeLists.txt
@@ -7,7 +7,7 @@ set(RGBDSRC
 	src/sources/stereovideo/stereovideo.cpp
 	#src/sources/net/net.cpp
 	#src/streamer.cpp
-	src/colour.cpp
+	#src/colour.cpp
 	src/group.cpp
 	src/cb_segmentation.cpp
 	#src/abr.cpp
diff --git a/components/rgbd-sources/include/ftl/rgbd/detail/source.hpp b/components/rgbd-sources/include/ftl/rgbd/detail/source.hpp
index bb162c925..a5949ff51 100644
--- a/components/rgbd-sources/include/ftl/rgbd/detail/source.hpp
+++ b/components/rgbd-sources/include/ftl/rgbd/detail/source.hpp
@@ -3,7 +3,7 @@
 
 #include <Eigen/Eigen>
 #include <ftl/cuda_util.hpp>
-#include <opencv2/opencv.hpp>
+//#include <opencv2/opencv.hpp>
 #include <ftl/rgbd/camera.hpp>
 #include <ftl/rgbd/frame.hpp>
 
diff --git a/components/rgbd-sources/include/ftl/rgbd/frameset.hpp b/components/rgbd-sources/include/ftl/rgbd/frameset.hpp
index e23a42d69..7fbb09b51 100644
--- a/components/rgbd-sources/include/ftl/rgbd/frameset.hpp
+++ b/components/rgbd-sources/include/ftl/rgbd/frameset.hpp
@@ -5,7 +5,7 @@
 #include <ftl/timer.hpp>
 #include <ftl/rgbd/frame.hpp>
 
-#include <opencv2/opencv.hpp>
+//#include <opencv2/core.hpp>
 #include <vector>
 
 namespace ftl {
diff --git a/components/rgbd-sources/include/ftl/rgbd/group.hpp b/components/rgbd-sources/include/ftl/rgbd/group.hpp
index 438d11feb..b339511a2 100644
--- a/components/rgbd-sources/include/ftl/rgbd/group.hpp
+++ b/components/rgbd-sources/include/ftl/rgbd/group.hpp
@@ -8,7 +8,7 @@
 #include <ftl/rgbd/frameset.hpp>
 #include <ftl/codecs/packet.hpp>
 
-#include <opencv2/opencv.hpp>
+//#include <opencv2/opencv.hpp>
 #include <vector>
 
 namespace ftl {
diff --git a/components/rgbd-sources/include/ftl/rgbd/snapshot.hpp b/components/rgbd-sources/include/ftl/rgbd/snapshot.hpp
index f9bb39756..8e1fa5960 100644
--- a/components/rgbd-sources/include/ftl/rgbd/snapshot.hpp
+++ b/components/rgbd-sources/include/ftl/rgbd/snapshot.hpp
@@ -5,7 +5,7 @@
 #include <loguru.hpp>
 #include <thread>
 
-#include <opencv2/opencv.hpp>
+#include <opencv2/core/mat.hpp>
 
 #include <Eigen/Eigen>
 #include <opencv2/core/eigen.hpp>
diff --git a/components/rgbd-sources/include/ftl/rgbd/source.hpp b/components/rgbd-sources/include/ftl/rgbd/source.hpp
index d26d8942a..41d9e88b0 100644
--- a/components/rgbd-sources/include/ftl/rgbd/source.hpp
+++ b/components/rgbd-sources/include/ftl/rgbd/source.hpp
@@ -9,7 +9,7 @@
 #include <ftl/rgbd/camera.hpp>
 #include <ftl/rgbd/detail/source.hpp>
 #include <ftl/codecs/packet.hpp>
-#include <opencv2/opencv.hpp>
+#include <opencv2/core/mat.hpp>
 #include <Eigen/Eigen>
 #include <string>
 #include <map>
diff --git a/components/rgbd-sources/src/colour.hpp b/components/rgbd-sources/src/colour.hpp
index be88853a5..9c7c44aff 100644
--- a/components/rgbd-sources/src/colour.hpp
+++ b/components/rgbd-sources/src/colour.hpp
@@ -1,7 +1,7 @@
 #ifndef _FTL_RGBD_COLOUR_HPP_
 #define _FTL_RGBD_COLOUR_HPP_
 
-#include <opencv2/opencv.hpp>
+#include <opencv2/core/mat.hpp>
 
 namespace ftl {
 namespace rgbd {
diff --git a/components/rgbd-sources/src/disparity.hpp b/components/rgbd-sources/src/disparity.hpp
index 6802869c1..bcb1fec09 100644
--- a/components/rgbd-sources/src/disparity.hpp
+++ b/components/rgbd-sources/src/disparity.hpp
@@ -5,7 +5,7 @@
 #ifndef _FTL_DISPARITY_HPP_
 #define _FTL_DISPARITY_HPP_
 
-#include <opencv2/opencv.hpp>
+#include <opencv2/core.hpp>
 #include <nlohmann/json.hpp>
 #include <ftl/configurable.hpp>
 #include <ftl/rgbd/frame.hpp>
diff --git a/components/streams/src/receiver.cpp b/components/streams/src/receiver.cpp
index 26d9c7947..bccd8ce4f 100644
--- a/components/streams/src/receiver.cpp
+++ b/components/streams/src/receiver.cpp
@@ -1,6 +1,8 @@
 #include <ftl/streams/receiver.hpp>
 #include <ftl/codecs/depth_convert_cuda.hpp>
 
+#include <opencv2/cudaimgproc.hpp>
+
 #include "parsers.hpp"
 #include "injectors.hpp"
 
diff --git a/components/streams/src/sender.cpp b/components/streams/src/sender.cpp
index e1aa69b58..11ababc85 100644
--- a/components/streams/src/sender.cpp
+++ b/components/streams/src/sender.cpp
@@ -1,6 +1,8 @@
 #include <ftl/streams/sender.hpp>
 #include <ftl/codecs/depth_convert_cuda.hpp>
 
+#include <opencv2/cudaimgproc.hpp>
+
 #include "injectors.hpp"
 
 #define LOGURU_REPLACE_GLOG 1
-- 
GitLab