Develop into master #9
@@ -1,4 +1,4 @@
|
|||||||
#include "BackgroundRemover.h"
|
#include "background_remover.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Author: Pierfrancesco Soffritti https://github.com/PierfrancescoSoffritti
|
Author: Pierfrancesco Soffritti https://github.com/PierfrancescoSoffritti
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
#include "FingerCount.h"
|
#include "finger_count.h"
|
||||||
|
|
||||||
#include "opencv2/imgproc.hpp"
|
#include "opencv2/imgproc.hpp"
|
||||||
#include "opencv2/highgui.hpp"
|
#include "opencv2/highgui.hpp"
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
#include "HandDetectRegion.h"
|
#include "hand_detect_region.h"
|
||||||
|
#define TIME_DURATION 1.0f
|
||||||
namespace computervision
|
namespace computervision
|
||||||
{
|
{
|
||||||
|
|
||||||
@@ -20,6 +20,15 @@ namespace computervision
|
|||||||
Mat input_frame = GenerateHandMaskSquare(camera_frame);
|
Mat input_frame = GenerateHandMaskSquare(camera_frame);
|
||||||
frame_out = input_frame.clone();
|
frame_out = input_frame.clone();
|
||||||
|
|
||||||
|
if (!background_calibrated || !skin_calibrated)
|
||||||
|
if (time >= TIME_DURATION)
|
||||||
|
{
|
||||||
|
//std::cout << "timer finised, seconds left: " << seconds_left << std::endl;
|
||||||
|
seconds_left--;
|
||||||
|
time = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// detect skin color
|
// detect skin color
|
||||||
skin_detector.drawSkinColorSampler(camera_frame,start_x_pos,start_y_pos,region_width,region_height);
|
skin_detector.drawSkinColorSampler(camera_frame,start_x_pos,start_y_pos,region_width,region_height);
|
||||||
|
|
||||||
@@ -33,6 +42,29 @@ namespace computervision
|
|||||||
// draw the hand rectangle on the camera input, and draw text showing if the hand is open or closed.
|
// draw the hand rectangle on the camera input, and draw text showing if the hand is open or closed.
|
||||||
DrawHandMask(&camera_frame);
|
DrawHandMask(&camera_frame);
|
||||||
|
|
||||||
|
if (seconds_left <= 0)
|
||||||
|
{
|
||||||
|
if (!background_calibrated)
|
||||||
|
{
|
||||||
|
background_remover.calibrate(input_frame);
|
||||||
|
background_calibrated = true;
|
||||||
|
hand_calibrator.SetBackGroundCalibrated(background_calibrated);
|
||||||
|
seconds_left = 5;
|
||||||
|
time = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
|
||||||
|
if (!skin_calibrated)
|
||||||
|
{
|
||||||
|
if (is_main_skin_detection_region)
|
||||||
|
skin_timer_callback();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// uncomment these lines to show debug hand information
|
||||||
//imshow("output" + region_id, frame_out);
|
//imshow("output" + region_id, frame_out);
|
||||||
//imshow("foreground" + region_id, foreground);
|
//imshow("foreground" + region_id, foreground);
|
||||||
//imshow("handMask" + region_id, handMask);
|
//imshow("handMask" + region_id, handMask);
|
||||||
@@ -48,7 +80,17 @@ namespace computervision
|
|||||||
|
|
||||||
hand_calibrator.DrawBackgroundSkinCalibrated(camera_frame);
|
hand_calibrator.DrawBackgroundSkinCalibrated(camera_frame);
|
||||||
|
|
||||||
|
std::string calibration_text = (!background_calibrated ? "calibrating background in " : (!skin_calibrated ? "calibrating skin in " : ""));
|
||||||
|
calibration_text += std::to_string(seconds_left);
|
||||||
|
if (!background_calibrated || !skin_calibrated)
|
||||||
|
{
|
||||||
|
cv::rectangle(camera_frame, cv::Rect(0, camera_frame.rows - 130, 600, 60), cv::Scalar(0, 0, 0), -1);
|
||||||
|
cv:putText(camera_frame, calibration_text, cv::Point(5, 400), cv::FONT_HERSHEY_COMPLEX, 1.0, cv::Scalar(255, 0, 255), 2);
|
||||||
|
}
|
||||||
|
if (background_calibrated && !skin_calibrated)
|
||||||
|
{
|
||||||
|
cv::putText(camera_frame, "put your hand in the left square", cv::Point(5, camera_frame.rows - 105), cv::FONT_HERSHEY_COMPLEX, 1.0, cv::Scalar(255, 0, 255), 2);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -93,6 +135,8 @@ namespace computervision
|
|||||||
{
|
{
|
||||||
std::cout << "calibrating skin " << region_id << std::endl;
|
std::cout << "calibrating skin " << region_id << std::endl;
|
||||||
hand_calibrator.SetSkinCalibration(true);
|
hand_calibrator.SetSkinCalibration(true);
|
||||||
|
skin_calibrated = true;
|
||||||
|
time = 0;
|
||||||
return skin_detector.calibrateAndReturn(frame_out);
|
return skin_detector.calibrateAndReturn(frame_out);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -101,6 +145,13 @@ namespace computervision
|
|||||||
std::cout << "setting skin " << region_id << std::endl;
|
std::cout << "setting skin " << region_id << std::endl;
|
||||||
skin_detector.setTresholds(tresholds);
|
skin_detector.setTresholds(tresholds);
|
||||||
hand_calibrator.SetSkinCalibration(true);
|
hand_calibrator.SetSkinCalibration(true);
|
||||||
|
skin_calibrated = true;
|
||||||
|
time = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void HandDetectRegion::UpdateTime(float delta_time)
|
||||||
|
{
|
||||||
|
time += delta_time;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -2,11 +2,13 @@
|
|||||||
|
|
||||||
#include <opencv2/core.hpp>
|
#include <opencv2/core.hpp>
|
||||||
#include <opencv2/imgproc.hpp>
|
#include <opencv2/imgproc.hpp>
|
||||||
|
#include <GLFW/glfw3.h>
|
||||||
|
|
||||||
#include "async/StaticCameraInstance.h"
|
#include "async/StaticCameraInstance.h"
|
||||||
#include "calibration/HandCalibrator.h"
|
#include "calibration/HandCalibrator.h"
|
||||||
#include "BackgroundRemover.h"
|
#include "background_remover.h"
|
||||||
#include "SkinDetector.h"
|
#include "skin_detector.h"
|
||||||
#include "FingerCount.h"
|
#include "finger_count.h"
|
||||||
namespace computervision
|
namespace computervision
|
||||||
{
|
{
|
||||||
class HandDetectRegion
|
class HandDetectRegion
|
||||||
@@ -36,8 +38,12 @@ namespace computervision
|
|||||||
std::vector<int> CalculateSkinTresholds();
|
std::vector<int> CalculateSkinTresholds();
|
||||||
|
|
||||||
void setSkinTresholds(std::vector<int>& tresholds);
|
void setSkinTresholds(std::vector<int>& tresholds);
|
||||||
|
void UpdateTime(float delta_time);
|
||||||
|
void SetMainSkinDetecRegion(bool val) { is_main_skin_detection_region = val; };
|
||||||
|
void SetSkinTimerCallback(std::function<void()> fun) { skin_timer_callback = fun; };
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
int start_x_pos;
|
int start_x_pos;
|
||||||
int start_y_pos;
|
int start_y_pos;
|
||||||
int region_height;
|
int region_height;
|
||||||
@@ -51,6 +57,17 @@ namespace computervision
|
|||||||
std::string region_id;
|
std::string region_id;
|
||||||
|
|
||||||
bool DrawHandMask(cv::Mat* input);
|
bool DrawHandMask(cv::Mat* input);
|
||||||
|
|
||||||
|
float time = 0;
|
||||||
|
int seconds_left = 5; // calibration countdown
|
||||||
|
|
||||||
|
bool background_calibrated = false;
|
||||||
|
bool skin_calibrated = false;
|
||||||
|
bool is_main_skin_detection_region = false;
|
||||||
|
std::function<void()> skin_timer_callback;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,14 +1,7 @@
|
|||||||
|
|
||||||
#include <opencv2/videoio.hpp>
|
#include "object_detection.h"
|
||||||
#include <opencv2/highgui.hpp>
|
|
||||||
#include <opencv2/video.hpp>
|
|
||||||
|
|
||||||
#include "ObjectDetection.h"
|
#define TIME_DURATION 1.0f
|
||||||
#include "BackgroundRemover.h"
|
|
||||||
#include "SkinDetector.h"
|
|
||||||
#include "FingerCount.h"
|
|
||||||
#include "async/StaticCameraInstance.h"
|
|
||||||
#include "calibration/HandCalibrator.h"
|
|
||||||
|
|
||||||
namespace computervision
|
namespace computervision
|
||||||
{
|
{
|
||||||
@@ -25,6 +18,11 @@ namespace computervision
|
|||||||
handcalibration::HandCalibrator hand_calibrator;
|
handcalibration::HandCalibrator hand_calibrator;
|
||||||
|
|
||||||
cv::VideoCapture cap = static_camera::getCap();
|
cv::VideoCapture cap = static_camera::getCap();
|
||||||
|
float time = 0;
|
||||||
|
int seconds_left = 5; // calibration countdown
|
||||||
|
|
||||||
|
bool background_calibrated = false;
|
||||||
|
bool skin_calibrated = false;
|
||||||
|
|
||||||
ObjectDetection::ObjectDetection()
|
ObjectDetection::ObjectDetection()
|
||||||
{
|
{
|
||||||
@@ -42,6 +40,20 @@ namespace computervision
|
|||||||
|
|
||||||
bool ObjectDetection::DetectHand(Mat camera_frame, bool& hand_present)
|
bool ObjectDetection::DetectHand(Mat camera_frame, bool& hand_present)
|
||||||
{
|
{
|
||||||
|
//calculate deltatime
|
||||||
|
if (!background_calibrated || !skin_calibrated)
|
||||||
|
{
|
||||||
|
UpdateTime();
|
||||||
|
|
||||||
|
if (time >= TIME_DURATION)
|
||||||
|
{
|
||||||
|
std::cout << "timer finised, seconds left: " << seconds_left << std::endl;
|
||||||
|
seconds_left--;
|
||||||
|
time = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
Mat input_frame = GenerateHandMaskSquare(camera_frame);
|
Mat input_frame = GenerateHandMaskSquare(camera_frame);
|
||||||
frame_out = input_frame.clone();
|
frame_out = input_frame.clone();
|
||||||
|
|
||||||
@@ -62,38 +74,59 @@ namespace computervision
|
|||||||
|
|
||||||
// draw the hand rectangle on the camera input, and draw text showing if the hand is open or closed.
|
// draw the hand rectangle on the camera input, and draw text showing if the hand is open or closed.
|
||||||
DrawHandMask(&camera_frame);
|
DrawHandMask(&camera_frame);
|
||||||
|
|
||||||
|
if (seconds_left <= 0)
|
||||||
|
{
|
||||||
|
if (!background_calibrated)
|
||||||
|
{
|
||||||
|
background_remover.calibrate(input_frame);
|
||||||
|
background_calibrated = true;
|
||||||
|
hand_calibrator.SetBackGroundCalibrated(background_calibrated);
|
||||||
|
seconds_left = 5;
|
||||||
|
time = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
|
||||||
|
if (!skin_calibrated)
|
||||||
|
{
|
||||||
|
skin_detector.calibrate(input_frame);
|
||||||
|
skin_calibrated = true;
|
||||||
|
hand_calibrator.SetSkinCalibration(skin_calibrated);
|
||||||
|
time = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
hand_calibrator.SetAmountOfFingers(fingers_amount);
|
hand_calibrator.SetAmountOfFingers(fingers_amount);
|
||||||
finger_count.DrawHandContours(camera_frame);
|
finger_count.DrawHandContours(camera_frame);
|
||||||
hand_calibrator.DrawHandCalibrationText(camera_frame);
|
hand_calibrator.DrawHandCalibrationText(camera_frame);
|
||||||
|
|
||||||
|
std::string calibration_text = (!background_calibrated ? "calibrating background in " : (!skin_calibrated ? "calibrating skin in " : ""));
|
||||||
|
calibration_text += std::to_string(seconds_left);
|
||||||
|
if (!background_calibrated || !skin_calibrated)
|
||||||
|
{
|
||||||
|
cv::rectangle(camera_frame, cv::Rect(0, camera_frame.rows - 120, 500, 50), cv::Scalar(0, 0, 0), -1);
|
||||||
|
cv::putText(camera_frame, calibration_text, cv::Point(5, camera_frame.rows-80), cv::FONT_HERSHEY_COMPLEX, 1.0, cv::Scalar(255, 0, 255), 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (background_calibrated && !skin_calibrated)
|
||||||
|
{
|
||||||
|
cv::putText(camera_frame, "put your hand in the square", cv::Point(5, camera_frame.rows - 100), cv::FONT_HERSHEY_COMPLEX, 1.0, cv::Scalar(255, 0, 255), 2);
|
||||||
|
}
|
||||||
imshow("camera", camera_frame);
|
imshow("camera", camera_frame);
|
||||||
|
|
||||||
|
// uncomment these lines to show debug hand information
|
||||||
/*imshow("output", frame_out);
|
/*imshow("output", frame_out);
|
||||||
imshow("foreground", foreground);
|
imshow("foreground", foreground);
|
||||||
imshow("handMask", handMask);
|
imshow("handMask", handMask);
|
||||||
imshow("handDetection", fingerCountDebug);*/
|
imshow("handDetection", fingerCountDebug);*/
|
||||||
|
|
||||||
hand_present = hand_calibrator.CheckIfHandPresent(handMask,handcalibration::HandDetectionType::MENU);
|
hand_present = hand_calibrator.CheckIfHandPresent(handMask, handcalibration::HandDetectionType::MENU);
|
||||||
hand_calibrator.SetHandPresent(hand_present);
|
hand_calibrator.SetHandPresent(hand_present);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int key = waitKey(1);
|
|
||||||
|
|
||||||
if (key == 98) // b, calibrate the background
|
|
||||||
{
|
|
||||||
background_remover.calibrate(input_frame);
|
|
||||||
hand_calibrator.SetBackGroundCalibrated(true);
|
|
||||||
}
|
|
||||||
else if (key == 115) // s, calibrate the skin color
|
|
||||||
{
|
|
||||||
skin_detector.calibrate(input_frame);
|
|
||||||
hand_calibrator.SetSkinCalibration(true);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
return fingers_amount > 0;
|
return fingers_amount > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -144,5 +177,15 @@ namespace computervision
|
|||||||
imshow("Webcam image", img);
|
imshow("Webcam image", img);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ObjectDetection::UpdateTime()
|
||||||
|
{
|
||||||
|
double current_time = glfwGetTime();
|
||||||
|
static double last_frame_time = current_time;
|
||||||
|
double delt_time = current_time - last_frame_time;
|
||||||
|
last_frame_time = current_time;
|
||||||
|
|
||||||
|
time += delt_time;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -8,6 +8,14 @@
|
|||||||
#include <opencv2/core.hpp>
|
#include <opencv2/core.hpp>
|
||||||
#include <opencv2/imgproc/imgproc.hpp>
|
#include <opencv2/imgproc/imgproc.hpp>
|
||||||
#include <opencv2/highgui/highgui.hpp>
|
#include <opencv2/highgui/highgui.hpp>
|
||||||
|
#include <opencv2/video.hpp>
|
||||||
|
#include <GLFW/glfw3.h>
|
||||||
|
|
||||||
|
#include "background_remover.h"
|
||||||
|
#include "skin_detector.h"
|
||||||
|
#include "finger_count.h"
|
||||||
|
#include "async/StaticCameraInstance.h"
|
||||||
|
#include "calibration/HandCalibrator.h"
|
||||||
|
|
||||||
|
|
||||||
namespace computervision
|
namespace computervision
|
||||||
@@ -86,6 +94,7 @@ namespace computervision
|
|||||||
private:
|
private:
|
||||||
bool is_hand_open;
|
bool is_hand_open;
|
||||||
bool is_hand_present;
|
bool is_hand_present;
|
||||||
|
void UpdateTime();
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
#include "SkinDetector.h"
|
#include "skin_detector.h"
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -27,8 +27,7 @@
|
|||||||
#include "scenes/scene.h"
|
#include "scenes/scene.h"
|
||||||
#include "scenes/in_Game_Scene.h"
|
#include "scenes/in_Game_Scene.h"
|
||||||
#include "scenes/startup_Scene.h"
|
#include "scenes/startup_Scene.h"
|
||||||
|
#include "computervision/object_detection.h"
|
||||||
#include "computervision/ObjectDetection.h"
|
|
||||||
|
|
||||||
#pragma comment(lib, "glfw3.lib")
|
#pragma comment(lib, "glfw3.lib")
|
||||||
#pragma comment(lib, "glew32s.lib")
|
#pragma comment(lib, "glew32s.lib")
|
||||||
|
|||||||
@@ -121,5 +121,87 @@ namespace render_engine
|
|||||||
|
|
||||||
shader.Stop();
|
shader.Stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Render(std::vector<std::shared_ptr<gui::GuiTexture>>& guis, shaders::GuiShader& shader)
|
||||||
|
{
|
||||||
|
shader.Start();
|
||||||
|
|
||||||
|
// Enable the VAO and the positions VBO
|
||||||
|
glBindVertexArray(quad.vao_id);
|
||||||
|
glEnableVertexAttribArray(0);
|
||||||
|
|
||||||
|
// Enable alpha blending (for transparency in the texture)
|
||||||
|
glEnable(GL_BLEND);
|
||||||
|
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||||
|
|
||||||
|
// Disable depth testing to textures with transparency can overlap
|
||||||
|
glDisable(GL_DEPTH_TEST);
|
||||||
|
|
||||||
|
// Render each gui to the screen
|
||||||
|
for (std::shared_ptr<gui::GuiTexture> gui : guis)
|
||||||
|
{
|
||||||
|
// Bind the texture of the gui to the shader
|
||||||
|
glActiveTexture(GL_TEXTURE0);
|
||||||
|
glBindTexture(GL_TEXTURE_2D, gui->texture);
|
||||||
|
|
||||||
|
glm::mat4 matrix = toolbox::CreateModelMatrix(gui->position, gui->scale);
|
||||||
|
shader.LoadModelMatrix(matrix);
|
||||||
|
|
||||||
|
glDrawArrays(GL_TRIANGLE_STRIP, 0, quad.vertex_count);
|
||||||
|
|
||||||
|
std::cout << "in render method, gui x value: " << gui.get()->scale.x << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Enable depth test again
|
||||||
|
glEnable(GL_DEPTH_TEST);
|
||||||
|
|
||||||
|
// Disable alpha blending
|
||||||
|
glDisable(GL_BLEND);
|
||||||
|
|
||||||
|
// Disable the VBO and VAO
|
||||||
|
glDisableVertexAttribArray(0);
|
||||||
|
glBindVertexArray(0);
|
||||||
|
|
||||||
|
shader.Stop();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Render(std::shared_ptr<gui::GuiTexture>& gui, shaders::GuiShader& shader)
|
||||||
|
{
|
||||||
|
shader.Start();
|
||||||
|
|
||||||
|
// Enable the VAO and the positions VBO
|
||||||
|
glBindVertexArray(quad.vao_id);
|
||||||
|
glEnableVertexAttribArray(0);
|
||||||
|
|
||||||
|
// Enable alpha blending (for transparency in the texture)
|
||||||
|
glEnable(GL_BLEND);
|
||||||
|
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||||
|
|
||||||
|
// Disable depth testing to textures with transparency can overlap
|
||||||
|
glDisable(GL_DEPTH_TEST);
|
||||||
|
|
||||||
|
// Render each gui to the screen
|
||||||
|
// Bind the texture of the gui to the shader
|
||||||
|
glActiveTexture(GL_TEXTURE0);
|
||||||
|
glBindTexture(GL_TEXTURE_2D, gui->texture);
|
||||||
|
|
||||||
|
glm::mat4 matrix = toolbox::CreateModelMatrix(gui->position, gui->scale);
|
||||||
|
shader.LoadModelMatrix(matrix);
|
||||||
|
|
||||||
|
glDrawArrays(GL_TRIANGLE_STRIP, 0, quad.vertex_count);
|
||||||
|
|
||||||
|
|
||||||
|
// Enable depth test again
|
||||||
|
glEnable(GL_DEPTH_TEST);
|
||||||
|
|
||||||
|
// Disable alpha blending
|
||||||
|
glDisable(GL_BLEND);
|
||||||
|
|
||||||
|
// Disable the VBO and VAO
|
||||||
|
glDisableVertexAttribArray(0);
|
||||||
|
glBindVertexArray(0);
|
||||||
|
|
||||||
|
shader.Stop();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,5 +40,22 @@ namespace render_engine
|
|||||||
@param shade: The shader the GUI textures need to be rendered with
|
@param shade: The shader the GUI textures need to be rendered with
|
||||||
*/
|
*/
|
||||||
void Render(std::vector<gui::GuiTexture*>& guis, shaders::GuiShader& shader);
|
void Render(std::vector<gui::GuiTexture*>& guis, shaders::GuiShader& shader);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @brief: renders guis elements from a shared pointer vector
|
||||||
|
*
|
||||||
|
* @param guis: List with GUI textures to render
|
||||||
|
* @param sahde: The shader to use
|
||||||
|
*/
|
||||||
|
void Render(std::vector<std::shared_ptr<gui::GuiTexture>>& guis, shaders::GuiShader& shader);
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @brief renders 1 gui element.
|
||||||
|
*
|
||||||
|
* @param gui: the texture to render
|
||||||
|
* @param shader: the shader to use
|
||||||
|
*/
|
||||||
|
void Render(std::shared_ptr<gui::GuiTexture>& gui, shaders::GuiShader& shader);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,32 +1,9 @@
|
|||||||
#include <iostream>
|
|
||||||
#include <memory>
|
|
||||||
#include <GL/glew.h>
|
|
||||||
#include <GLFW/glfw3.h>
|
|
||||||
#include "in_Game_Scene.h"
|
#include "in_Game_Scene.h"
|
||||||
#include "startup_Scene.h"
|
|
||||||
#include "../entities/main_character.h"
|
|
||||||
#include "../collision/collision_handler.h"
|
|
||||||
#include "../gui/gui_interactable.h"
|
|
||||||
#include "../models/model.h"
|
|
||||||
#include "../renderEngine/loader.h"
|
|
||||||
#include "../renderEngine/obj_loader.h"
|
|
||||||
#include "../renderEngine/renderer.h"
|
|
||||||
#include "../shaders/entity_shader.h"
|
|
||||||
#include "../toolbox/toolbox.h"
|
|
||||||
#include "../entities/house_generator.h"
|
|
||||||
#include <deque>
|
|
||||||
#include <functional>
|
|
||||||
#include <memory>
|
|
||||||
#include <queue>
|
|
||||||
#include <opencv2/core/base.hpp>
|
|
||||||
#include "../computervision/HandDetectRegion.h"
|
|
||||||
#include "../computervision/ObjectDetection.h"
|
|
||||||
|
|
||||||
#define MAX_MODEL_DEQUE_SIZE 6 // max amount of models to load at the same time
|
#define MAX_MODEL_DEQUE_SIZE 6 // max amount of models to load at the same time
|
||||||
#define UPCOMING_MODEL_AMOUNT 4 // how much models should be loaded in front of us
|
#define UPCOMING_MODEL_AMOUNT 4 // how much models should be loaded in front of us
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
namespace scene
|
namespace scene
|
||||||
{
|
{
|
||||||
std::shared_ptr<entities::MainCharacter>main_character;
|
std::shared_ptr<entities::MainCharacter>main_character;
|
||||||
@@ -39,11 +16,18 @@ namespace scene
|
|||||||
shaders::EntityShader* shader;
|
shaders::EntityShader* shader;
|
||||||
shaders::GuiShader* gui_shader;
|
shaders::GuiShader* gui_shader;
|
||||||
std::vector<gui::GuiTexture*> guis;
|
std::vector<gui::GuiTexture*> guis;
|
||||||
|
std::vector<std::shared_ptr<gui::GuiTexture>> score_textures;
|
||||||
|
|
||||||
int furniture_count_old;
|
int furniture_count_old;
|
||||||
int score;
|
int score;
|
||||||
|
|
||||||
|
<<<<<<< HEAD
|
||||||
std::vector<computervision::HandDetectRegion*> regions;
|
std::vector<computervision::HandDetectRegion*> regions;
|
||||||
|
=======
|
||||||
|
float delta_time = 0;
|
||||||
|
|
||||||
|
std::vector<computervision::HandDetectRegion> regions;
|
||||||
|
>>>>>>> develop
|
||||||
computervision::HandDetectRegion reg_left("left", 0, 0, 150, 150), reg_right("right", 0, 0, 150, 150), reg_up("up", 0, 0, 150, 150);
|
computervision::HandDetectRegion reg_left("left", 0, 0, 150, 150), reg_right("right", 0, 0, 150, 150), reg_up("up", 0, 0, 150, 150);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -60,7 +44,23 @@ namespace scene
|
|||||||
gui_shader = new shaders::GuiShader();
|
gui_shader = new shaders::GuiShader();
|
||||||
gui_shader->Init();
|
gui_shader->Init();
|
||||||
score = 0;
|
score = 0;
|
||||||
|
|
||||||
|
for (int i = 0; i <= 9; i++)
|
||||||
|
{
|
||||||
|
std::shared_ptr<gui::GuiTexture> score_pointer;
|
||||||
|
|
||||||
|
std::string texture_path = "res/";
|
||||||
|
texture_path += std::to_string(i);
|
||||||
|
texture_path += ".png";
|
||||||
|
|
||||||
|
score_pointer = std::make_unique<gui::GuiTexture>(render_engine::loader::LoadTexture(texture_path), glm::vec2(-0.9f, 0.8f), glm::vec2(0.07, 0.15));
|
||||||
|
|
||||||
|
score_textures.push_back(score_pointer);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* temporary?
|
* temporary?
|
||||||
* just to make some bounding boxes
|
* just to make some bounding boxes
|
||||||
@@ -83,26 +83,31 @@ namespace scene
|
|||||||
delete house_generator;
|
delete house_generator;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
void In_Game_Scene::SetupHandDetection()
|
||||||
* @brief loads a new chunk in front of the camera, and deletes the chunk behind the camera.
|
|
||||||
*
|
|
||||||
* @param model_pos the amount of models the camera has passed already. This is the rounded result of (z position of camera) / (size of model)
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
void load_chunk(int model_pos)
|
|
||||||
{
|
{
|
||||||
static unsigned int furniture_count = 0;
|
|
||||||
|
|
||||||
// set up squares according to size of camera input
|
// set up squares according to size of camera input
|
||||||
cv::Mat camera_frame;
|
cv::Mat camera_frame;
|
||||||
static_camera::getCap().read(camera_frame); // get camera frame to know the width and heigth
|
static_camera::getCap().read(camera_frame); // get camera frame to know the width and heigth
|
||||||
|
|
||||||
|
reg_left.SetMainSkinDetecRegion(true);
|
||||||
|
reg_right.SetMainSkinDetecRegion(false);
|
||||||
|
reg_right.SetMainSkinDetecRegion(false);
|
||||||
|
std::function<void()> callback = [this]() {OnSkinCalibrationCallback(); };
|
||||||
|
reg_left.SetSkinTimerCallback(callback);
|
||||||
|
|
||||||
reg_left.SetXPos(10);
|
reg_left.SetXPos(10);
|
||||||
reg_left.SetYPos(camera_frame.rows / 2 - reg_left.GetHeight() / 2);
|
reg_left.SetYPos(camera_frame.rows / 2 - reg_left.GetHeight() / 2);
|
||||||
reg_right.SetXPos(camera_frame.cols - 10 - reg_right.GetWidth());
|
reg_right.SetXPos(camera_frame.cols - 10 - reg_right.GetWidth());
|
||||||
reg_right.SetYPos(camera_frame.rows / 2 - reg_right.GetHeight() / 2);
|
reg_right.SetYPos(camera_frame.rows / 2 - reg_right.GetHeight() / 2);
|
||||||
reg_up.SetXPos(camera_frame.cols / 2 - reg_up.GetWidth() / 2);
|
reg_up.SetXPos(camera_frame.cols / 2 - reg_up.GetWidth() / 2);
|
||||||
reg_up.SetYPos(10);
|
reg_up.SetYPos(10);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void In_Game_Scene::LoadChunk(int model_pos)
|
||||||
|
{
|
||||||
|
static unsigned int furniture_count = 0;
|
||||||
std::cout << "loading model chunk" << std::endl;
|
std::cout << "loading model chunk" << std::endl;
|
||||||
if (house_models.size() >= MAX_MODEL_DEQUE_SIZE * furniture_count)
|
if (house_models.size() >= MAX_MODEL_DEQUE_SIZE * furniture_count)
|
||||||
{
|
{
|
||||||
@@ -137,10 +142,13 @@ namespace scene
|
|||||||
main_character = std::make_shared<entities::MainCharacter>(model_char, glm::vec3(0, -50, -100), glm::vec3(0, 90, 0), 5, char_box);
|
main_character = std::make_shared<entities::MainCharacter>(model_char, glm::vec3(0, -50, -100), glm::vec3(0, 90, 0), 5, char_box);
|
||||||
collision_entities.push_back(main_character);
|
collision_entities.push_back(main_character);
|
||||||
house_generator = new entities::HouseGenerator();
|
house_generator = new entities::HouseGenerator();
|
||||||
|
|
||||||
|
SetupHandDetection();
|
||||||
|
|
||||||
// load the first few house models
|
// load the first few house models
|
||||||
for (int i = 0; i <= UPCOMING_MODEL_AMOUNT; i++)
|
for (int i = 0; i <= UPCOMING_MODEL_AMOUNT; i++)
|
||||||
{
|
{
|
||||||
load_chunk(i);
|
LoadChunk(i);
|
||||||
}
|
}
|
||||||
|
|
||||||
lights.push_back(entities::Light(glm::vec3(0, 1000, 7000), glm::vec3(5, 5, 5))); // sun
|
lights.push_back(entities::Light(glm::vec3(0, 1000, 7000), glm::vec3(5, 5, 5))); // sun
|
||||||
@@ -244,14 +252,21 @@ namespace scene
|
|||||||
|
|
||||||
// Stop rendering the entities
|
// Stop rendering the entities
|
||||||
shader->Stop();
|
shader->Stop();
|
||||||
|
|
||||||
|
DrawScore(score);
|
||||||
}
|
}
|
||||||
|
|
||||||
//updates certain variables
|
//updates certain variables
|
||||||
void scene::In_Game_Scene::update(GLFWwindow* window)
|
void scene::In_Game_Scene::update(GLFWwindow* window)
|
||||||
{
|
{
|
||||||
|
UpdateDeltaTime();
|
||||||
//camera.Move(window);
|
//camera.Move(window);
|
||||||
|
<<<<<<< HEAD
|
||||||
update_hand_detection();
|
update_hand_detection();
|
||||||
main_character->Move(regions);
|
main_character->Move(regions);
|
||||||
|
=======
|
||||||
|
main_character->Move(window);
|
||||||
|
>>>>>>> develop
|
||||||
|
|
||||||
//std::cout << "x get: " << movement.x << "\ny get: " << movement.y << "\nz get: " << movement.z << "\n";
|
//std::cout << "x get: " << movement.x << "\ny get: " << movement.y << "\nz get: " << movement.z << "\n";
|
||||||
camera->Follow(main_character->GetPosition());
|
camera->Follow(main_character->GetPosition());
|
||||||
@@ -263,15 +278,22 @@ namespace scene
|
|||||||
// if we have passed a model, load a new one and delete the one behind us
|
// if we have passed a model, load a new one and delete the one behind us
|
||||||
if (last_model_pos != model_pos)
|
if (last_model_pos != model_pos)
|
||||||
{
|
{
|
||||||
load_chunk(model_pos + UPCOMING_MODEL_AMOUNT);
|
LoadChunk(model_pos + UPCOMING_MODEL_AMOUNT);
|
||||||
score += furniture_count_old;
|
score += furniture_count_old;
|
||||||
std::cout << "Score: " << score << std::endl;
|
std::cout << "Score: " << score << std::endl;
|
||||||
std::cout << "Funriture_count_old in model (house excluded): " << furniture_count_old << std::endl;
|
std::cout << "Furniture_count_old in model (house excluded): " << furniture_count_old << std::endl;
|
||||||
|
|
||||||
}
|
}
|
||||||
// remember the position at which the new model was added
|
// remember the position at which the new model was added
|
||||||
last_model_pos = model_pos;
|
last_model_pos = model_pos;
|
||||||
|
|
||||||
collision::CheckCollisions(collision_entities);
|
collision::CheckCollisions(collision_entities);
|
||||||
|
<<<<<<< HEAD
|
||||||
|
=======
|
||||||
|
update_hand_detection();
|
||||||
|
|
||||||
|
|
||||||
|
>>>>>>> develop
|
||||||
}
|
}
|
||||||
|
|
||||||
//manages the key input in the game scene
|
//manages the key input in the game scene
|
||||||
@@ -290,24 +312,14 @@ namespace scene
|
|||||||
{
|
{
|
||||||
game_state = scene::Game_State::RUNNING;
|
game_state = scene::Game_State::RUNNING;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (glfwGetKey(window, GLFW_KEY_B) == GLFW_PRESS)
|
|
||||||
{
|
|
||||||
reg_left.CalibrateBackground();
|
|
||||||
reg_right.CalibrateBackground();
|
|
||||||
reg_up.CalibrateBackground();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (glfwGetKey(window, GLFW_KEY_S) == GLFW_PRESS)
|
|
||||||
{
|
|
||||||
std::vector<int> tresholds = reg_left.CalculateSkinTresholds();
|
|
||||||
reg_right.setSkinTresholds(tresholds);
|
|
||||||
reg_up.setSkinTresholds(tresholds);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void scene::In_Game_Scene::update_hand_detection()
|
void scene::In_Game_Scene::update_hand_detection()
|
||||||
{
|
{
|
||||||
|
reg_left.UpdateTime(delta_time);
|
||||||
|
reg_right.UpdateTime(delta_time);
|
||||||
|
reg_up.UpdateTime(delta_time);
|
||||||
|
|
||||||
cv::Mat camera_frame;
|
cv::Mat camera_frame;
|
||||||
static_camera::getCap().read(camera_frame);
|
static_camera::getCap().read(camera_frame);
|
||||||
reg_left.DetectHand(camera_frame);
|
reg_left.DetectHand(camera_frame);
|
||||||
@@ -317,9 +329,41 @@ namespace scene
|
|||||||
cv::imshow("camera", camera_frame);
|
cv::imshow("camera", camera_frame);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void scene::In_Game_Scene::OnSkinCalibrationCallback()
|
||||||
|
{
|
||||||
|
std::cout << "on skin calibration callback" << std::endl;
|
||||||
|
std::vector<int> tresholds = reg_left.CalculateSkinTresholds();
|
||||||
|
reg_right.setSkinTresholds(tresholds);
|
||||||
|
reg_up.setSkinTresholds(tresholds);
|
||||||
|
}
|
||||||
|
|
||||||
//renders the models for the pause menu
|
//renders the models for the pause menu
|
||||||
void In_Game_Scene::render_pause_menu()
|
void In_Game_Scene::render_pause_menu()
|
||||||
{
|
{
|
||||||
render_engine::renderer::Render(pause_guis, *gui_shader);
|
render_engine::renderer::Render(pause_guis, *gui_shader);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void In_Game_Scene::DrawScore(int score)
|
||||||
|
{
|
||||||
|
std::vector<int> digits;
|
||||||
|
score_guis.clear();
|
||||||
|
|
||||||
|
toolbox::GetDigitsFromNumber(score, digits);
|
||||||
|
|
||||||
|
for (int i = digits.size() - 1; i >= 0; i--)
|
||||||
|
{
|
||||||
|
score_textures[digits[i]].get()->position.x = 0.15 * i - 0.9; // place the number at the top left. the numbers are just fine tuned to get the position just right
|
||||||
|
render_engine::renderer::Render(score_textures[digits[i]], *gui_shader);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void In_Game_Scene::UpdateDeltaTime()
|
||||||
|
{
|
||||||
|
double current_time = glfwGetTime();
|
||||||
|
static double last_frame_time = current_time;
|
||||||
|
delta_time = current_time - last_frame_time;
|
||||||
|
last_frame_time = current_time;
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,18 @@
|
|||||||
#include <ostream>
|
#include <ostream>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
#include <string>
|
||||||
|
#include <opencv2/core/base.hpp>
|
||||||
|
#include <opencv2/imgcodecs.hpp>
|
||||||
|
#include <opencv2/imgproc.hpp>
|
||||||
|
#include <GL/glew.h>
|
||||||
|
#include <GLFW/glfw3.h>
|
||||||
|
#include <deque>
|
||||||
|
#include <functional>
|
||||||
|
#include <queue>
|
||||||
|
#include <opencv2/core/base.hpp>
|
||||||
|
|
||||||
|
#include "startup_Scene.h"
|
||||||
#include "scene.h"
|
#include "scene.h"
|
||||||
#include "../gui/gui_interactable.h"
|
#include "../gui/gui_interactable.h"
|
||||||
#include "../models/model.h"
|
#include "../models/model.h"
|
||||||
@@ -11,6 +23,12 @@
|
|||||||
#include "../renderEngine/renderer.h"
|
#include "../renderEngine/renderer.h"
|
||||||
#include "../shaders/entity_shader.h"
|
#include "../shaders/entity_shader.h"
|
||||||
#include "../toolbox/toolbox.h"
|
#include "../toolbox/toolbox.h"
|
||||||
|
#include "../entities/main_character.h"
|
||||||
|
#include "../collision/collision_handler.h"
|
||||||
|
#include "../entities/house_generator.h"
|
||||||
|
#include "../computervision/hand_detect_region.h"
|
||||||
|
#include "../computervision/object_detection.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
namespace scene
|
namespace scene
|
||||||
@@ -53,6 +71,10 @@ namespace scene
|
|||||||
std::vector<gui::GuiTexture*> guis;
|
std::vector<gui::GuiTexture*> guis;
|
||||||
//pause_guis is a list of components that will be rendered when the game is paused.
|
//pause_guis is a list of components that will be rendered when the game is paused.
|
||||||
std::vector<gui::GuiTexture*> pause_guis;
|
std::vector<gui::GuiTexture*> pause_guis;
|
||||||
|
// list of gui texture that holds the textures for the score
|
||||||
|
std::vector<std::shared_ptr<gui::GuiTexture>> score_guis;
|
||||||
|
|
||||||
|
void UpdateDeltaTime();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief renders the objects/gui models
|
* @brief renders the objects/gui models
|
||||||
@@ -60,7 +82,39 @@ namespace scene
|
|||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
void render_pause_menu();
|
void render_pause_menu();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief updates the hand detection with the deltatime and checks the hand detection for each region. als updates the camera display
|
||||||
|
*
|
||||||
|
*/
|
||||||
void update_hand_detection();
|
void update_hand_detection();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief sets up the hand detection regions and sets the callbacks for the skin calibration.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
void SetupHandDetection();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief callback that gets called when the left skin detect region timout has been reached. sets the other regions with the skin data from the first region
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
void OnSkinCalibrationCallback();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief draws the score on the screen with the digit resources.
|
||||||
|
*
|
||||||
|
* @param score the score to display.
|
||||||
|
*/
|
||||||
|
void DrawScore(int score);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief loads a new chunk in front of the camera, and deletes the chunk behind the camera.
|
||||||
|
*
|
||||||
|
* @param model_pos the amount of models the camera has passed already. This is the rounded result of (z position of camera) / (size of model)
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
void LoadChunk(int model_pos);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
In_Game_Scene();
|
In_Game_Scene();
|
||||||
@@ -97,6 +151,9 @@ namespace scene
|
|||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
void onKey(GLFWwindow* window, int key, int scancode, int action, int mods) override;
|
void onKey(GLFWwindow* window, int key, int scancode, int action, int mods) override;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -14,8 +14,8 @@
|
|||||||
#include "../gui/gui_interactable.h"
|
#include "../gui/gui_interactable.h"
|
||||||
#include "../toolbox/toolbox.h"
|
#include "../toolbox/toolbox.h"
|
||||||
#include "../computervision/MenuTest.h"
|
#include "../computervision/MenuTest.h"
|
||||||
#include "../computervision/ObjectDetection.h"
|
#include "../computervision/object_detection.h"
|
||||||
#include "../computervision/HandDetectRegion.h"
|
#include "../computervision/hand_detect_region.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -42,5 +42,7 @@ namespace toolbox
|
|||||||
* @return: True if the timer has finished
|
* @return: True if the timer has finished
|
||||||
*/
|
*/
|
||||||
bool HasFinished() const { return has_finished; }
|
bool HasFinished() const { return has_finished; }
|
||||||
|
|
||||||
|
void Reset() { current_time = 0; }
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
#include <ctime>
|
#include <ctime>
|
||||||
#include "toolbox.h"
|
#include "toolbox.h"
|
||||||
|
#include <iostream>
|
||||||
namespace toolbox
|
namespace toolbox
|
||||||
{
|
{
|
||||||
glm::mat4 CreateModelMatrix(glm::vec2 translation, glm::vec2 scale)
|
glm::mat4 CreateModelMatrix(glm::vec2 translation, glm::vec2 scale)
|
||||||
@@ -56,4 +56,12 @@ namespace toolbox
|
|||||||
}
|
}
|
||||||
return min + rand() % ((max + 1) - min);
|
return min + rand() % ((max + 1) - min);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GetDigitsFromNumber(int number, std::vector<int>& result_vector)
|
||||||
|
{
|
||||||
|
if (number >= 10)
|
||||||
|
GetDigitsFromNumber(number / 10, result_vector);
|
||||||
|
|
||||||
|
result_vector.push_back(number % 10);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
#include "../entities/camera.h"
|
#include "../entities/camera.h"
|
||||||
#include <glm/gtc/matrix_transform.hpp>
|
#include <glm/gtc/matrix_transform.hpp>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
namespace toolbox
|
namespace toolbox
|
||||||
{
|
{
|
||||||
@@ -78,4 +79,13 @@ namespace toolbox
|
|||||||
* @return: The random number
|
* @return: The random number
|
||||||
*/
|
*/
|
||||||
int Random(const int min, const int max);
|
int Random(const int min, const int max);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief gets the separate digits from the number.
|
||||||
|
*
|
||||||
|
* @param number the number to get the digits from
|
||||||
|
* @param result_vector the vector to hold the individual digits.
|
||||||
|
*/
|
||||||
|
void GetDigitsFromNumber(int number, std::vector<int>& result_vector);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,13 +23,15 @@
|
|||||||
<ClCompile Include="src\entities\main_character.cpp" />
|
<ClCompile Include="src\entities\main_character.cpp" />
|
||||||
<ClCompile Include="src\entities\house_generator.cpp" />
|
<ClCompile Include="src\entities\house_generator.cpp" />
|
||||||
<ClCompile Include="src\computervision\calibration\HandCalibrator.cpp" />
|
<ClCompile Include="src\computervision\calibration\HandCalibrator.cpp" />
|
||||||
<ClCompile Include="src\computervision\HandDetectRegion.cpp" />
|
<ClCompile Include="src\computervision\hand_detect_region.cpp" />
|
||||||
<ClCompile Include="src\scenes\in_Game_Scene.cpp" />
|
<ClCompile Include="src\scenes\in_Game_Scene.cpp" />
|
||||||
<ClCompile Include="src\computervision\MenuTest.cpp" />
|
<ClCompile Include="src\computervision\MenuTest.cpp" />
|
||||||
<ClCompile Include="src\computervision\ObjectDetection.cpp" />
|
<ClCompile Include="src\computervision\async\async_arm_detection.cpp" />
|
||||||
<ClCompile Include="src\computervision\SkinDetector.cpp" />
|
<ClCompile Include="src\computervision\object_detection.cpp" />
|
||||||
<ClCompile Include="src\computervision\FingerCount.cpp" />
|
<ClCompile Include="src\computervision\OpenPoseVideo.cpp" />
|
||||||
<ClCompile Include="src\computervision\BackgroundRemover.cpp" />
|
<ClCompile Include="src\computervision\skin_detector.cpp" />
|
||||||
|
<ClCompile Include="src\computervision\finger_count.cpp" />
|
||||||
|
<ClCompile Include="src\computervision\background_remover.cpp" />
|
||||||
<ClCompile Include="src\entities\camera.cpp" />
|
<ClCompile Include="src\entities\camera.cpp" />
|
||||||
<ClCompile Include="src\entities\collision_entity.cpp" />
|
<ClCompile Include="src\entities\collision_entity.cpp" />
|
||||||
<ClCompile Include="src\entities\entity.cpp" />
|
<ClCompile Include="src\entities\entity.cpp" />
|
||||||
@@ -52,15 +54,16 @@
|
|||||||
<ClInclude Include="src\entities\house_generator.h" />
|
<ClInclude Include="src\entities\house_generator.h" />
|
||||||
<ClInclude Include="src\computervision\calibration\HandCalibrator.h" />
|
<ClInclude Include="src\computervision\calibration\HandCalibrator.h" />
|
||||||
<ClInclude Include="src\computervision\calibration\StaticSkinTreshold.h" />
|
<ClInclude Include="src\computervision\calibration\StaticSkinTreshold.h" />
|
||||||
<ClInclude Include="src\computervision\HandDetectRegion.h" />
|
<ClInclude Include="src\computervision\hand_detect_region.h" />
|
||||||
<ClInclude Include="src\scenes\in_Game_Scene.h" />
|
<ClInclude Include="src\scenes\in_Game_Scene.h" />
|
||||||
<ClInclude Include="src\scenes\scene.h" />
|
<ClInclude Include="src\scenes\scene.h" />
|
||||||
<ClInclude Include="src\computervision\async\StaticCameraInstance.h" />
|
<ClInclude Include="src\computervision\async\StaticCameraInstance.h" />
|
||||||
<ClInclude Include="src\computervision\FingerCount.h" />
|
<ClInclude Include="src\computervision\finger_count.h" />
|
||||||
<ClInclude Include="src\computervision\BackgroundRemover.h" />
|
<ClInclude Include="src\computervision\background_remover.h" />
|
||||||
<ClInclude Include="src\computervision\MenuTest.h" />
|
<ClInclude Include="src\computervision\MenuTest.h" />
|
||||||
<ClInclude Include="src\computervision\SkinDetector.h" />
|
<ClInclude Include="src\computervision\OpenPoseVideo.h" />
|
||||||
<ClInclude Include="src\computervision\ObjectDetection.h" />
|
<ClInclude Include="src\computervision\skin_detector.h" />
|
||||||
|
<ClInclude Include="src\computervision\object_detection.h" />
|
||||||
<ClInclude Include="src\entities\camera.h" />
|
<ClInclude Include="src\entities\camera.h" />
|
||||||
<ClInclude Include="src\entities\collision_entity.h" />
|
<ClInclude Include="src\entities\collision_entity.h" />
|
||||||
<ClInclude Include="src\entities\entity.h" />
|
<ClInclude Include="src\entities\entity.h" />
|
||||||
|
|||||||
@@ -3,10 +3,19 @@
|
|||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="src\collision\collision_handler.cpp" />
|
<ClCompile Include="src\collision\collision_handler.cpp" />
|
||||||
<ClCompile Include="src\scenes\in_Game_Scene.cpp" />
|
<ClCompile Include="src\scenes\in_Game_Scene.cpp" />
|
||||||
|
<<<<<<< HEAD
|
||||||
<ClCompile Include="src\computervision\ObjectDetection.cpp" />
|
<ClCompile Include="src\computervision\ObjectDetection.cpp" />
|
||||||
<ClCompile Include="src\computervision\SkinDetector.cpp" />
|
<ClCompile Include="src\computervision\SkinDetector.cpp" />
|
||||||
<ClCompile Include="src\computervision\FingerCount.cpp" />
|
<ClCompile Include="src\computervision\FingerCount.cpp" />
|
||||||
<ClCompile Include="src\computervision\BackgroundRemover.cpp" />
|
<ClCompile Include="src\computervision\BackgroundRemover.cpp" />
|
||||||
|
=======
|
||||||
|
<ClCompile Include="src\computervision\async\async_arm_detection.cpp" />
|
||||||
|
<ClCompile Include="src\computervision\object_detection.cpp" />
|
||||||
|
<ClCompile Include="src\computervision\OpenPoseVideo.cpp" />
|
||||||
|
<ClCompile Include="src\computervision\skin_detector.cpp" />
|
||||||
|
<ClCompile Include="src\computervision\finger_count.cpp" />
|
||||||
|
<ClCompile Include="src\computervision\background_remover.cpp" />
|
||||||
|
>>>>>>> develop
|
||||||
<ClCompile Include="src\entities\camera.cpp" />
|
<ClCompile Include="src\entities\camera.cpp" />
|
||||||
<ClCompile Include="src\entities\collision_entity.cpp" />
|
<ClCompile Include="src\entities\collision_entity.cpp" />
|
||||||
<ClCompile Include="src\entities\entity.cpp" />
|
<ClCompile Include="src\entities\entity.cpp" />
|
||||||
@@ -21,7 +30,11 @@
|
|||||||
<ClCompile Include="src\toolbox\toolbox.cpp" />
|
<ClCompile Include="src\toolbox\toolbox.cpp" />
|
||||||
<ClCompile Include="src\scenes\startup_Scene.cpp" />
|
<ClCompile Include="src\scenes\startup_Scene.cpp" />
|
||||||
<ClCompile Include="src\computervision\calibration\HandCalibrator.cpp" />
|
<ClCompile Include="src\computervision\calibration\HandCalibrator.cpp" />
|
||||||
|
<<<<<<< HEAD
|
||||||
<ClCompile Include="src\computervision\HandDetectRegion.cpp" />
|
<ClCompile Include="src\computervision\HandDetectRegion.cpp" />
|
||||||
|
=======
|
||||||
|
<ClCompile Include="src\computervision\hand_detect_region.cpp" />
|
||||||
|
>>>>>>> develop
|
||||||
<ClCompile Include="src\entities\main_character.cpp" />
|
<ClCompile Include="src\entities\main_character.cpp" />
|
||||||
<ClCompile Include="src\entities\house_generator.cpp" />
|
<ClCompile Include="src\entities\house_generator.cpp" />
|
||||||
<ClCompile Include="src\computervision\MenuTest.cpp" />
|
<ClCompile Include="src\computervision\MenuTest.cpp" />
|
||||||
@@ -114,7 +127,7 @@
|
|||||||
<ClInclude Include="src\toolbox\toolbox.h" />
|
<ClInclude Include="src\toolbox\toolbox.h" />
|
||||||
<ClInclude Include="src\scenes\startup_Scene.h" />
|
<ClInclude Include="src\scenes\startup_Scene.h" />
|
||||||
<ClInclude Include="src\computervision\calibration\HandCalibrator.h" />
|
<ClInclude Include="src\computervision\calibration\HandCalibrator.h" />
|
||||||
<ClInclude Include="src\computervision\HandDetectRegion.h" />
|
<ClInclude Include="src\computervision\hand_detect_region.h" />
|
||||||
<ClInclude Include="src\computervision\calibration\StaticSkinTreshold.h" />
|
<ClInclude Include="src\computervision\calibration\StaticSkinTreshold.h" />
|
||||||
<ClInclude Include="src\collision\collision.h" />
|
<ClInclude Include="src\collision\collision.h" />
|
||||||
<ClInclude Include="src\collision\collision_handler.h" />
|
<ClInclude Include="src\collision\collision_handler.h" />
|
||||||
@@ -122,11 +135,11 @@
|
|||||||
<ClInclude Include="src\entities\house_generator.h" />
|
<ClInclude Include="src\entities\house_generator.h" />
|
||||||
<ClInclude Include="src\scenes\in_Game_Scene.h" />
|
<ClInclude Include="src\scenes\in_Game_Scene.h" />
|
||||||
<ClInclude Include="src\scenes\scene.h" />
|
<ClInclude Include="src\scenes\scene.h" />
|
||||||
<ClInclude Include="src\computervision\FingerCount.h" />
|
<ClInclude Include="src\computervision\finger_count.h" />
|
||||||
<ClInclude Include="src\computervision\BackgroundRemover.h" />
|
<ClInclude Include="src\computervision\background_remover.h" />
|
||||||
<ClInclude Include="src\computervision\MenuTest.h" />
|
<ClInclude Include="src\computervision\MenuTest.h" />
|
||||||
<ClInclude Include="src\computervision\SkinDetector.h" />
|
<ClInclude Include="src\computervision\skin_detector.h" />
|
||||||
<ClInclude Include="src\computervision\ObjectDetection.h" />
|
<ClInclude Include="src\computervision\object_detection.h" />
|
||||||
<ClInclude Include="src\entities\camera.h" />
|
<ClInclude Include="src\entities\camera.h" />
|
||||||
<ClInclude Include="src\entities\collision_entity.h" />
|
<ClInclude Include="src\entities\collision_entity.h" />
|
||||||
<ClInclude Include="src\entities\entity.h" />
|
<ClInclude Include="src\entities\entity.h" />
|
||||||
|
|||||||
Reference in New Issue
Block a user