[ADD] hand detection type enum
This commit is contained in:
@@ -10,6 +10,9 @@
|
||||
#include "../renderEngine/renderer.h"
|
||||
#include "../shaders/entity_shader.h"
|
||||
#include "../toolbox/toolbox.h"
|
||||
#include <opencv2/core/base.hpp>
|
||||
#include "../computervision/HandDetectRegion.h"
|
||||
#include "../computervision/ObjectDetection.h"
|
||||
|
||||
|
||||
namespace scene
|
||||
@@ -23,6 +26,11 @@ namespace scene
|
||||
entities::Camera camera(glm::vec3(0, 0, 0), glm::vec3(0, 0, 0));
|
||||
std::vector<gui::GuiTexture*> guis;
|
||||
|
||||
std::vector<computervision::HandDetectRegion> regions;
|
||||
computervision::ObjectDetection objDetect;
|
||||
computervision::HandDetectRegion reg1("left", 20, 100, 150, 150);
|
||||
computervision::HandDetectRegion reg2("right", 200, 200, 150, 150);
|
||||
|
||||
|
||||
In_Game_Scene::In_Game_Scene()
|
||||
{
|
||||
@@ -105,6 +113,7 @@ namespace scene
|
||||
void scene::In_Game_Scene::update(GLFWwindow* window)
|
||||
{
|
||||
camera.Move(window);
|
||||
update_hand_detection();
|
||||
}
|
||||
|
||||
void scene::In_Game_Scene::onKey(GLFWwindow* window, int key, int scancode, int action, int mods)
|
||||
@@ -113,6 +122,26 @@ namespace scene
|
||||
{
|
||||
return_value = scene::Scenes::STOP;
|
||||
}
|
||||
|
||||
if (glfwGetKey(window, GLFW_KEY_B) == GLFW_PRESS)
|
||||
{
|
||||
reg1.CalibrateBackground();
|
||||
reg2.CalibrateBackground();
|
||||
}
|
||||
|
||||
if (glfwGetKey(window, GLFW_KEY_S) == GLFW_PRESS)
|
||||
{
|
||||
std::vector<int> tresholds = reg1.CalculateSkinTresholds();
|
||||
reg2.setSkinTresholds(tresholds);
|
||||
}
|
||||
}
|
||||
|
||||
void scene::In_Game_Scene::update_hand_detection()
|
||||
{
|
||||
cv::Mat camera_frame = objDetect.ReadCamera();
|
||||
reg1.DetectHand(camera_frame);
|
||||
reg2.DetectHand(camera_frame);
|
||||
|
||||
cv::imshow("camera", camera_frame);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ namespace scene
|
||||
{
|
||||
private:
|
||||
scene::Scenes return_value = scene::Scenes::INGAME;
|
||||
void update_hand_detection();
|
||||
|
||||
public:
|
||||
In_Game_Scene();
|
||||
|
||||
@@ -8,15 +8,9 @@
|
||||
|
||||
namespace scene
|
||||
{
|
||||
std::vector<computervision::HandDetectRegion> regions;
|
||||
computervision::ObjectDetection objDetect;
|
||||
computervision::HandDetectRegion reg1("left",20,100,150,150);
|
||||
computervision::HandDetectRegion reg2("right",200,200,150,150);
|
||||
|
||||
scene::Scenes scene::Startup_Scene::start(GLFWwindow *window)
|
||||
{
|
||||
regions.push_back(reg1);
|
||||
regions.push_back(reg2);
|
||||
while (return_value == scene::Scenes::STARTUP)
|
||||
{
|
||||
render();
|
||||
@@ -36,30 +30,6 @@ namespace scene
|
||||
|
||||
void scene::Startup_Scene::update(GLFWwindow* window)
|
||||
{
|
||||
cv::Mat camera_frame = objDetect.ReadCamera();
|
||||
reg1.DetectHand(camera_frame);
|
||||
reg2.DetectHand(camera_frame);
|
||||
|
||||
cv::imshow("camera", camera_frame);
|
||||
|
||||
int key = cv::waitKey(1);
|
||||
|
||||
if (key == 98) // b, calibrate the background
|
||||
{
|
||||
for (int i = 0; i < regions.size(); i++)
|
||||
{
|
||||
regions[i].CalibrateBackground();
|
||||
}
|
||||
}
|
||||
else if (key == 115) // s, calibrate the skin color
|
||||
{
|
||||
std::vector<int> tresholds = regions[0].CalculateSkinTresholds();
|
||||
for (int i = 1; i < regions.size(); i++)
|
||||
{
|
||||
regions[i].setSkinTresholds(tresholds);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user