2015-06-25 3 views
0

Я пытаюсь преобразовать свою матрицу в CV_32FC1, чтобы тренировать SVM.I всегда получают сообщ об ошибке:OpenCV Assertion не удалось - ConvertTo

OpenCV Error: Assertion failed (func != 0) in convertTo, file /opt/opencv/modules/core/src/convert.cpp, line 1115 
/eropt/opencv/modules/core/src/convert.cpp:1115: error: (-215) func != 0 in function convtTo 

В основном я пытаюсь

Mat eyes_train_data = Mat::zeros(Eyes.features.size(), CV_32FC1); 
Eyes.features.copyTo(eyes_train_data); 
eyes_train_data.convertTo(eyes_train_data, CV_32FC1); 

Я уже пытался получить глубину() матрицы, которая возвращает 7. Я не уверен, что это значит. Eyes.features матрица является (или должно быть) с плавающей точкой матрицы

получить Eyes.features я использовать gotHogFeatures-метод с

vector<float> descriptorsValues; 
    vector<Point> location; 
    for(Mat patch : patches) { 
     hog.compute(patch, descriptorsValues, Size(0,0), Size(0,0), location); 
     features.push_back(descriptorsValues); 
} 

descriptorValues ​​представляет собой вектор-строку и функции должны чем выглядеть следующим образом:

features: 
{ 
descriptorValues0 
descriptorValues1 
... 
} 

благодарит за любую помощь.

+0

что Eyes.type()? – Micka

+0

Eyes.features - тип Mat; Глаза - это только typedef struct TrainingData Eyes – vicR

+0

и Eyes.features.type() результаты для '7' – vicR

ответ

2

Ваш код конвертации кажется неправильным. Это должно быть что-то вроде:

Mat eyes_train_data; 
eyes_train_data.convertTo(eyes_train_data, CV_32FC1); 

Что тип Eyes.features? Кажется, что это должно быть уже Mat1f. Однако вы уверены, что features.push_back работает должным образом? Похоже, push_back нуждается в const Mat& m.

Вы можете получить матрицу строк из вектора:

Mat1f m; 
vector<float> v1 = {1.f, 1.5f, 2.1f}; 
vector<float> v2 = {3.f, 3.5f, 4.1f}; 

Mat temp1(Mat1f(v1).t()); 
Mat temp2(Mat1f(v2).t()); 

m.push_back(temp1); 
m.push_back(temp2); 
+0

ok. как я могу преобразовать вектор в Mat & m (вектор строки) и нажать его после этого? – vicR