From e0079671ee191a703749dd70a2ce3abc8a520cc0 Mon Sep 17 00:00:00 2001 From: "simon.fanetti" <simon.fanetti@etu.hesge.ch> Date: Fri, 8 May 2020 17:50:34 +0200 Subject: [PATCH] cleaning --- inc/beamer.h | 38 +++++++++++++++++++------------------- inc/beamerProjection.h | 29 ++++++++++++++++------------- inc/camera.h | 12 ++++-------- inc/sandbox.h | 1 - sandbox.h | 1 - src/components/beamer.cpp | 20 +++++++------------- src/components/camera.cpp | 36 ++++++------------------------------ src/lib/sandbox.cpp | 8 ++++---- src/lib/sandboxSetup.cpp | 10 +++++----- 9 files changed, 61 insertions(+), 94 deletions(-) diff --git a/inc/beamer.h b/inc/beamer.h index ab68548..e614108 100644 --- a/inc/beamer.h +++ b/inc/beamer.h @@ -5,28 +5,28 @@ #define ESCAPE_CHAR 27 -class Beamer -{ -private: - const char *BEAMER_POSITION_FILE = "./beamer.dat"; - cv::Point3f beamerPosition; - cv::Size resolution = cv::Size(256,144); +class Beamer{ + private: + const char *BEAMER_POSITION_FILE = "./beamer.dat"; + cv::Point3f beamerPosition; + cv::Size resolution = cv::Size(256,144); - cv::Point3f intersection(cv::Vec3f v1, cv::Point3f p1, cv::Vec3f v2, cv::Point3f p2, cv::Vec3f v3, cv::Point3f p3, bool &isFound); - std::vector<int> findCercleZ(cv::Mat &rgb); - cv::Point3d approximatePosition(std::vector<cv::Point3d> points1, std::vector<cv::Point3d> points2); + cv::Point3f intersection(cv::Vec3f v1, cv::Point3f p1, cv::Vec3f v2, cv::Point3f p2, cv::Vec3f v3, cv::Point3f p3, bool &isFound); + std::vector<int> findCercleZ(cv::Mat &rgb); + cv::Point3d approximatePosition(std::vector<cv::Point3d> points1, std::vector<cv::Point3d> points2); -public: - Beamer(); + public: + Beamer(); - cv::Point3f getPosition(){ return beamerPosition; }; - void setPosition(cv::Point3f pos){ beamerPosition = pos; }; - void setWidth(int w){ resolution.width = w; }; - int getWidth(){ return resolution.width; }; - void setHeight(int h){ resolution.height = h; }; - int getHeight(){ return resolution.height; }; + cv::Point3f getPosition(){ return beamerPosition; }; + void setPosition(cv::Point3f pos){ beamerPosition = pos; }; + void setWidth(int w){ resolution.width = w; }; + int getWidth(){ return resolution.width; }; + void setHeight(int h){ resolution.height = h; }; + int getHeight(){ return resolution.height; }; - int findBeamerFrom(Camera camera); - void printPosition(); + int findBeamerFrom(Camera camera); + void printPosition(); + }; #endif diff --git a/inc/beamerProjection.h b/inc/beamerProjection.h index bd28fd0..18a019c 100644 --- a/inc/beamerProjection.h +++ b/inc/beamerProjection.h @@ -5,19 +5,22 @@ #include "beamer.h" #include "camera.h" -class BeamerProjection -{ -private: - const char *wndname = (char *)"Sandbox"; - cv::Mat adjustingMatrix; - cv::Point2i adjustPixel(int i, int j, float z, Camera camera, cv::Point3f beamer); +class BeamerProjection{ + private: + const char *wndname = (char *)"Sandbox"; + cv::Mat adjustingMatrix; + + cv::Point2i adjustPixel(int i, int j, float z, Camera camera, cv::Point3f beamer); + + public: + BeamerProjection(); + + void setAdjustingMatrix(cv::Mat matrix){ matrix.clone(); } + cv::Mat getAdjustingMatrix(){ return adjustingMatrix.clone(); } + + cv::Point2i rotatePixel(cv::Point2i pixel); + void adjustFrame(cv::Mat &depth, cv::Mat &src, cv::Mat &dst, Camera camera, cv::Point3f beamer); + void printAdjustingMatrix(); -public: - BeamerProjection(); - cv::Point2i rotatePixel(cv::Point2i pixel); - void adjustFrame(cv::Mat &depth, cv::Mat &src, cv::Mat &dst, Camera camera, cv::Point3f beamer); - void setAdjustingMatrix(cv::Mat matrix){ matrix.clone(); } - cv::Mat getAdjustingMatrix(){ return adjustingMatrix.clone(); } - void printAdjustingMatrix(); }; #endif \ No newline at end of file diff --git a/inc/camera.h b/inc/camera.h index 9c617e7..6f68e4c 100644 --- a/inc/camera.h +++ b/inc/camera.h @@ -5,13 +5,12 @@ #include <librealsense2/rsutil.h> #include <opencv2/opencv.hpp> -// camera definition : 640x480 +// camera resolution : 640x480 class Camera{ private: rs2::spatial_filter spatFilter; rs2::temporal_filter tempFilter; - rs2::decimation_filter decFilter; rs2::config cfg; rs2::pipeline pipe; rs2::pipeline_profile profile; @@ -21,16 +20,13 @@ class Camera{ cv::Mat matRGB; cv::Rect croppingMask; - void flipMat(cv::Mat &m); void filterDepthFrame(rs2::depth_frame &frameDepth); - cv::Mat captureFrame(); - cv::Mat getAverageFrame(int numberFrame); public: Camera(); - cv::Mat getDepthFrameAlign(){ return matDepth; }; - cv::Mat getRGBFrameAlign(){ return matRGB.clone(); }; + cv::Mat getDepthFrame(){ return matDepth; }; + cv::Mat getRGBFrame(){ return matRGB.clone(); }; void setCroppingMask(cv::Rect mask){ croppingMask = mask; }; cv::Rect getCroppingMask(){ return croppingMask; }; @@ -39,7 +35,7 @@ class Camera{ void stop(); cv::Point3f deprojectPixelToPoint(float coord[], float z1); cv::Point2i projectPointToPixel(cv::Point3f point3D); - void captureFramesAlign(); + void captureFrame(); void printCroppingMask(); }; diff --git a/inc/sandbox.h b/inc/sandbox.h index bf0a907..d77df2c 100644 --- a/inc/sandbox.h +++ b/inc/sandbox.h @@ -24,7 +24,6 @@ class Sandbox{ cv::Mat getRGBFrame(); cv::Mat getDepthFrame(); - cv::Mat* adjustProjection(cv::Mat* frame); void showImage(cv::Mat* image); int loadConfig(); diff --git a/sandbox.h b/sandbox.h index bf0a907..d77df2c 100644 --- a/sandbox.h +++ b/sandbox.h @@ -24,7 +24,6 @@ class Sandbox{ cv::Mat getRGBFrame(); cv::Mat getDepthFrame(); - cv::Mat* adjustProjection(cv::Mat* frame); void showImage(cv::Mat* image); int loadConfig(); diff --git a/src/components/beamer.cpp b/src/components/beamer.cpp index 0d8da86..c1f6bdb 100644 --- a/src/components/beamer.cpp +++ b/src/components/beamer.cpp @@ -44,9 +44,9 @@ int Beamer::findBeamerFrom(Camera camera) while (capturedPoints.size() < nbPoint){ // capture frame - camera.captureFramesAlign(); - depth = camera.getDepthFrameAlign(); - rgb = camera.getRGBFrameAlign(); + camera.captureFrame(); + depth = camera.getDepthFrame(); + rgb = camera.getRGBFrame(); // Look for the circle target std::vector<int> crc = findCercleZ(rgb); @@ -80,15 +80,10 @@ int Beamer::findBeamerFrom(Camera camera) frameImage.setTo(cv::Scalar(0, 0, 0)); } - // check for the end - if (capturedPoints.size() == nbPoint){ - - cv::Vec3f dir(capturedPoints[0].x - capturedPoints[1].x, capturedPoints[0].y - capturedPoints[1].y, capturedPoints[0].z - capturedPoints[1].z); - cv::Vec6f line; - cv::fitLine(capturedPoints, line, CV_DIST_L2, 0, 0.01, 0.01); - directions.push_back(cv::Point3d(line[3] * fact, line[4] * fact, line[5] * fact)); - bases.push_back(cv::Point3d(line[0], line[1], line[2])); - } + cv::Vec6f line; + cv::fitLine(capturedPoints, line, CV_DIST_L2, 0, 0.01, 0.01); + directions.push_back(cv::Point3d(line[3] * fact, line[4] * fact, line[5] * fact)); + bases.push_back(cv::Point3d(line[0], line[1], line[2])); } camera.stop(); @@ -208,7 +203,6 @@ std::vector<int> Beamer::findCercleZ(cv::Mat &rgb) cv::Point3d Beamer::approximatePosition(std::vector<cv::Point3d> directions, std::vector<cv::Point3d> bases){ - // Regression Linéaire cv::Point3d pa, pb; double mua; double mub; diff --git a/src/components/camera.cpp b/src/components/camera.cpp index d1772b0..dce1c6c 100644 --- a/src/components/camera.cpp +++ b/src/components/camera.cpp @@ -13,8 +13,11 @@ Camera::Camera() { void Camera::start(){ - - rs2::log_to_console(RS2_LOG_SEVERITY_ERROR); + + std::remove("./camera.logs"); + rs2::log_to_file(RS2_LOG_SEVERITY_DEBUG, "./camera.logs"); + + //rs2::log_to_console(RS2_LOG_SEVERITY_DEBUG);//RS2_LOG_SEVERITY_ERROR); spatFilter.set_option(RS2_OPTION_HOLES_FILL, 5); //cfg.enable_device_from_file("../input/flux/flux5.bag"); profile = pipe.start(cfg); @@ -37,7 +40,6 @@ void Camera::warmingUp() { rs2::frameset data = pipe.wait_for_frames(); auto frameDepth = data.get_depth_frame(); - //frameDepth = decFilter.process(frameDepth); frameDepth = spatFilter.process(frameDepth); frameDepth = tempFilter.process(frameDepth); } @@ -49,7 +51,7 @@ void Camera::stop(){ } -void Camera::captureFramesAlign(){ +void Camera::captureFrame(){ rs2::align align(RS2_STREAM_DEPTH); auto frameset = pipe.wait_for_frames(); @@ -94,35 +96,9 @@ void Camera::printCroppingMask(){ */ -cv::Mat Camera::captureFrame(){ - - auto frame = pipe.wait_for_frames(); - auto frameDepth = frame.get_depth_frame(); - filterDepthFrame(frameDepth); - cv::Mat matFrame(cv::Size(frameDepth.get_width(), frameDepth.get_height()), CV_16UC1, (void *)frameDepth.get_data(), cv::Mat::AUTO_STEP); - return matFrame; -} - - void Camera::filterDepthFrame(rs2::depth_frame &frameDepth) { - // frameDepth = decFilter.process(frameDepth); frameDepth = spatFilter.process(frameDepth); frameDepth = tempFilter.process(frameDepth); intrinsics = frameDepth.get_profile().as<rs2::video_stream_profile>().get_intrinsics(); } - - -cv::Mat Camera::getAverageFrame(int numberFrame){ - - cv::Mat averageFrame; - Camera::captureFrame().copyTo(averageFrame); - for (int i = 1; i <= numberFrame; i++) - { - averageFrame *= i; - add(averageFrame, Camera::captureFrame(), averageFrame); - averageFrame /= i + 1; - } - return averageFrame; -} - diff --git a/src/lib/sandbox.cpp b/src/lib/sandbox.cpp index 334b3af..1c74a63 100644 --- a/src/lib/sandbox.cpp +++ b/src/lib/sandbox.cpp @@ -15,13 +15,13 @@ Sandbox::Sandbox(){ */ cv::Mat Sandbox::getRGBFrame(){ - camera.captureFramesAlign(); - return camera.getRGBFrameAlign()(camera.getCroppingMask()); + camera.captureFrame(); + return camera.getRGBFrame()(camera.getCroppingMask()); } cv::Mat Sandbox::getDepthFrame(){ - camera.captureFramesAlign(); - return camera.getDepthFrameAlign()(camera.getCroppingMask()); + camera.captureFrame(); + return camera.getDepthFrame()(camera.getCroppingMask()); } diff --git a/src/lib/sandboxSetup.cpp b/src/lib/sandboxSetup.cpp index f2d60b6..d77d149 100644 --- a/src/lib/sandboxSetup.cpp +++ b/src/lib/sandboxSetup.cpp @@ -33,12 +33,12 @@ int SandboxSetup::setupBeamerResolution(){ int width = 0; int height = 0; - std::cout << "Enter width of the beamer's resolution :" << std::endl; + std::cout << "Enter width of the frame projected :" << std::endl; std::cin >> width; if(std::cin.fail()){ return 1; } - std::cout << "Enter height of the beamer's resolution :" << std::endl; + std::cout << "Enter height of the frame projected :" << std::endl; std::cin >> height; if(std::cin.fail()){ return 1; @@ -69,9 +69,9 @@ int SandboxSetup::setupProjection(){ // Take picture camera.start(); // 1 seconde of warming up - camera.captureFramesAlign(); - cv::Mat frameData = camera.getDepthFrameAlign(); - cv::Mat coloredFrame = camera.getRGBFrameAlign(); + camera.captureFrame(); + cv::Mat frameData = camera.getDepthFrame(); + cv::Mat coloredFrame = camera.getRGBFrame(); cv::Size s = frameData.size(); cv::Point center(s.width / 2, s.height / 2); camera.stop(); -- GitLab