From 95548c9864e34be58dc512994ce3a660f75da565 Mon Sep 17 00:00:00 2001 From: Vlad Shakhuro Date: Tue, 12 Aug 2014 14:08:14 +0400 Subject: [PATCH] Fix waldboost interface --- modules/adas/tools/fcw_detect/fcw_detect.cpp | 2 +- modules/adas/tools/fcw_train/fcw_train.cpp | 3 ++- modules/xobjdetect/include/opencv2/xobjdetect.hpp | 14 ++++---------- modules/xobjdetect/src/icfdetector.cpp | 5 +++-- 4 files changed, 10 insertions(+), 14 deletions(-) diff --git a/modules/adas/tools/fcw_detect/fcw_detect.cpp b/modules/adas/tools/fcw_detect/fcw_detect.cpp index b670d6c13..36f9f29ac 100644 --- a/modules/adas/tools/fcw_detect/fcw_detect.cpp +++ b/modules/adas/tools/fcw_detect/fcw_detect.cpp @@ -82,7 +82,7 @@ int main(int argc, char *argv[]) ICFDetector detector; FileStorage fs(model_filename, FileStorage::READ); - fs["icfdetector"] >> detector; + detector.read(fs["icfdetector"]); fs.release(); vector objects; Mat img = imread(image_path); diff --git a/modules/adas/tools/fcw_train/fcw_train.cpp b/modules/adas/tools/fcw_train/fcw_train.cpp index 8f0375e5b..271174283 100644 --- a/modules/adas/tools/fcw_train/fcw_train.cpp +++ b/modules/adas/tools/fcw_train/fcw_train.cpp @@ -94,6 +94,7 @@ int main(int argc, char *argv[]) ICFDetector detector; detector.train(pos_path, bg_path, params); FileStorage fs(model_filename, FileStorage::WRITE); - fs << "icfdetector" << detector; + fs << "icfdetector"; + detector.write(fs); fs.release(); } diff --git a/modules/xobjdetect/include/opencv2/xobjdetect.hpp b/modules/xobjdetect/include/opencv2/xobjdetect.hpp index 88f21e58f..c9a996b93 100644 --- a/modules/xobjdetect/include/opencv2/xobjdetect.hpp +++ b/modules/xobjdetect/include/opencv2/xobjdetect.hpp @@ -128,7 +128,7 @@ public: Feature enumeration starts from 0 */ virtual std::vector train(const Mat& /*data*/, - const Mat& /*labels*/) {return std::vector();} + const Mat& /*labels*/) = 0; /* Predict object class given object that can compute object features @@ -138,21 +138,15 @@ public: is from class +1 */ virtual float predict( - const Ptr& /*feature_evaluator*/) const - {return 0.0f;} + const Ptr& /*feature_evaluator*/) const = 0; /* Write WaldBoost to FileStorage */ - virtual void write(FileStorage& /*fs*/) const {} + virtual void write(FileStorage& /*fs*/) const = 0; /* Read WaldBoost */ - virtual void read(const FileNode& /*node*/) {} + virtual void read(const FileNode& /*node*/) = 0; }; -void write(FileStorage& fs, String&, const WaldBoost& waldboost); - -void read(const FileNode& node, WaldBoost& w, - const WaldBoost& default_value = WaldBoost()); - CV_EXPORTS Ptr createWaldBoost(const WaldBoostParams& params = WaldBoostParams()); diff --git a/modules/xobjdetect/src/icfdetector.cpp b/modules/xobjdetect/src/icfdetector.cpp index 0154d5505..ef919af45 100644 --- a/modules/xobjdetect/src/icfdetector.cpp +++ b/modules/xobjdetect/src/icfdetector.cpp @@ -163,7 +163,8 @@ void ICFDetector::write(FileStorage& fs) const fs << "{"; fs << "model_n_rows" << model_n_rows_; fs << "model_n_cols" << model_n_cols_; - fs << "waldboost" << *waldboost_; + fs << "waldboost"; + waldboost_->write(fs); fs << "features" << "["; for( size_t i = 0; i < features_.size(); ++i ) { @@ -178,7 +179,7 @@ void ICFDetector::read(const FileNode& node) waldboost_ = Ptr(createWaldBoost(WaldBoostParams())); node["model_n_rows"] >> model_n_rows_; node["model_n_cols"] >> model_n_cols_; - node["waldboost"] >> *waldboost_; + waldboost_->read(node["waldboost"]); FileNode features = node["features"]; features_.clear(); vector p;