如何在字符串和分类器对象ptr

时间:2018-08-21 10:15:44

标签: c++ opencv

如何在字符串和分类器之间创建映射,在这种情况下,它是openCV中的SVM分类器。本质上,我正在尝试将代码从使用opencv 2.3.1转换为Opencv 3 +

旧代码是

map<string,CvSVM> class_classifier

我尝试使用cv :: ml :: SVM,但是编译器抱怨这是一个抽象类。该错误显示为

  

“ second是第二个对象的副本

map<string,cv::ml::SVM> class_classifier

所以我尝试了对象和指针

cv::Ptr<cv::ml::SVM> classifier = cv::ml::SVM::create() map<string,classifier> class_classifier

cv::Ptr<cv::ml::SVM> classifier = cv::ml::SVM::create() map<string,classifier*> class_classifier

但是两者似乎都错了。

  

“分类器”不能出现在常量表达式中

我该怎么办?

谢谢

1 个答案:

答案 0 :(得分:1)

此:

map<string,classifier> class_classifier

无法工作,因为您不能在期望使用类型的值上使用。为了在希望更明显的地方进行说明,如果您想创建字符串到字符串的映射,那么您也不会这样做:

std::string x = "hello world";
std::map<std::string, x> my_map; // non-sense !

如果要将字符串映射到cv::Ptr<cv::ml::SVM>,则正确的声明是:

std::map<std::string, cv::Ptr<cv::ml::SVM> > my_map;