2012-03-21 64 views
2

我正在使用MS Visual Studio 2008,OpenCV,C++和SVM進行OCR相關項目。至少直到昨天,當我打開的項目繼續工作,VS報這個錯誤,我可以運行代碼:OpenCV中的SVM:Visual Studio 2008錯誤地報告了錯誤(或是不是正確?)

error C2664: 'bool CvSVM::train(const CvMat *,const CvMat *,const CvMat *,const CvMat *,CvSVMParams)' : cannot convert parameter 1 from 'cv::Mat' to 'const CvMat *' 

它沒有發生之前,我並沒有改變有關的任何代碼(我只改變了內核的參數)。

的代碼有錯誤是:

Mat curTrainData, curTrainLabel; 
CvSVM svm; 
. 
. 
. 
svm.train(curTrainData, curTrainLabel, Mat(), Mat(), params); 

如果我將鼠標懸停在代碼中,我還是得到了這個提示:image

這意味着我的語法沒有錯。那麼VS爲什麼要麻煩地報告這樣的錯誤?

回答

0

問題是你使用Opencv C++引用比c引用。我的意思是CvMat屬於Opencv的C部分,而屬於「cv」命名空間的cv :: Mat屬於C++部分。所以我的建議是將其轉換爲所需的格式。這裏是opencv備忘單的鏈接,只需查看前幾行代碼即可。它會告訴你如何去做。 Convert from Mat to CvMat