如何在字符串和分类器之间创建映射,在这种情况下,它是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
但是两者似乎都错了。
“分类器”不能出现在常量表达式中
我该怎么办?
谢谢
答案 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;