SVM в OpenCV: Visual Studio 2008 сообщал об ошибке неправильно (или это правильно?) - PullRequest
2 голосов
/ 21 марта 2012

Я использую MS Visual Studio 2008, OpenCV, C ++ и SVM для проекта, связанного с OCR. По крайней мере, я могу запустить код до вчерашнего дня, когда я открою проект, чтобы продолжить работу, VS сообщил об этой ошибке:

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 сообщает о такой ошибке?

1 Ответ

0 голосов
/ 10 июня 2012

Проблема в том, что вы используете ссылку Opencv c ++, а не ссылку c. Я имею в виду, что CvMat является частью C Opencv, тогда как cv :: Mat, которая принадлежит пространству имен «cv», имеет часть c ++. Поэтому я предлагаю преобразовать его в необходимый формат. Вот ссылка на шпаргалку OpenCV, просто проверьте первые несколько строк кода. он скажет вам, как это сделать. Конвертировать из Mat в CvMat

...