【发布时间】:2015-09-12 13:14:46
【问题描述】:
我正在尝试将我的矩阵转换为 CV_32FC1 来训练我的 SVM。我总是收到错误消息:
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 的矩阵的depth()。我不确定那是什么意思。 Eyes.features 矩阵是(或应该是)浮点矩阵
要获得Eyes.features,我使用了带有
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
...
}
感谢您的帮助。
【问题讨论】:
-
什么是 Eyes.type()?
-
Eyes.features 是 Mat 类型; Eyes 只是 typedef 结构 TrainingData Eyes
-
和 Eyes.features.type() 结果到
7 -
您可以尝试转换为 CV_64FC1 吗?如果源已经具有所需的类型,则转换可能会失败
标签: c++ opencv matrix vector svm