2017-04-21 50 views
0

我使用的OpenCV的cv::ml::LogisticRegression類,並已係列化,並保存它使用cv::Algorithm::save方法文件,並正嘗試加載文件恢復到Ptr<LogisticRegression>使用cv::ml::LogisticRegression::load,如documentation描述,我救代碼如下所示:opencv的Logistic迴歸加載失敗

Ptr<cv::ml::LogisticRegression> logisReg = logisticRegression(features_train, labels_train); 
logisReg->save("mFileName"); 

並加載代碼(不同地點)

Ptr<cv::ml::LogisticRegression> logisReg = cv::ml::LogisticRegression::load("mFileName", "Logisitic Regression Classifier"); 

保存代碼工作正常,和序列化的文件內容是有道理的(純文本)。然而,當我試圖編譯加載它,我得到這個錯誤:

main.cpp:97:5: error: no matching function for call to 'load' 
    cv::ml::LogisticRegression::load("logisReg.auracle", "Logisitic Regression Classifier"); 
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
/usr/local/opt/opencv3/include/opencv2/core.hpp:3074:44: note: candidate template ignored: couldn't infer template argument '_Tp' 
    template<typename _Tp> static Ptr<_Tp> load(const String& filename, const String& objname=String()) 
            ^
1 error generated. 
make: *** [main.o] Error 1 

回答

0

你給的文檔版本3.2.0-dev的,它具有的功能: static Ptr<LogisticRegression> load(const String &filepath, const String &nodeName=String())

但3.1版之前只有繼承的模板函數: template<typename _Tp > static Ptr<_Tp> load (const String &filename, const String &objname=String())

我猜你正在使用的OpenCV庫版本3.1之前,嘗試實例明確的模板函數: load<LogisticRegression>()