From 469755a2e36563195718fb62323a833a5b7df9cb Mon Sep 17 00:00:00 2001 From: VladimirAndreevich Date: Wed, 6 Jul 2016 16:44:59 +0300 Subject: [PATCH 1/2] day_3_start --- include/detection.hpp | 12 +++++++++++- src/detection.cpp | 25 +++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/include/detection.hpp b/include/detection.hpp index 46930d3..dc73401 100644 --- a/include/detection.hpp +++ b/include/detection.hpp @@ -3,7 +3,7 @@ #include #include -#include "opencv2/core/core.hpp" +#include "opencv2/opencv.hpp" class Detector { public: @@ -12,3 +12,13 @@ class Detector { virtual void Detect(const cv::Mat& frame, std::vector& objects, std::vector& scores) = 0; }; + +class CascadeDetector : public Detector { +public: + virtual bool Init(const std::string& model_file_path); + virtual void Detect(const cv::Mat& frame, std::vector& objects, + std::vector& scores); + +protected: + cv::CascadeClassifier detector; +}; diff --git a/src/detection.cpp b/src/detection.cpp index 15e7fd1..7b9f773 100644 --- a/src/detection.cpp +++ b/src/detection.cpp @@ -11,3 +11,28 @@ shared_ptr Detector::CreateDetector(const string& name) { << std::endl; return nullptr; } + +bool CascadeDetector::Init(const std::string& model_file_path) +{ + if (detector.load(model_file_path)==true) + { + return true; + } + else return false; +} +std::shared_ptr CascadeDetector::CreateDetector(const std::string& name) +{ + if (name == "cascade") { + return std::make_shared(); + } +} +void CascadeDetector::Detect(const cv::Mat& frame, std::vector& objects, + std::vector& scores) +{ + std::vector scores_int; + detector.detectMultiScale(frame, objects, scores_int); + scores.resize(scores_int.size()); + for (std::vector::size_type i = 0; i < scores_int.size(); ++i) { + scores[i] = scores_int[i]; + } +} \ No newline at end of file From 55e1bd75c0b857b70d92ca40db634afc8d350ba6 Mon Sep 17 00:00:00 2001 From: VladimirAndreevich Date: Wed, 6 Jul 2016 18:06:29 +0300 Subject: [PATCH 2/2] day_3_good --- src/detection.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/detection.cpp b/src/detection.cpp index 7b9f773..03bea7a 100644 --- a/src/detection.cpp +++ b/src/detection.cpp @@ -7,9 +7,13 @@ using std::shared_ptr; using namespace cv; shared_ptr Detector::CreateDetector(const string& name) { + if (name == "cascade") { + return std::make_shared(); + } std::cerr << "Failed to create detector with name '" << name << "'" << std::endl; return nullptr; + } bool CascadeDetector::Init(const std::string& model_file_path) @@ -20,12 +24,7 @@ bool CascadeDetector::Init(const std::string& model_file_path) } else return false; } -std::shared_ptr CascadeDetector::CreateDetector(const std::string& name) -{ - if (name == "cascade") { - return std::make_shared(); - } -} + void CascadeDetector::Detect(const cv::Mat& frame, std::vector& objects, std::vector& scores) {