[英]OpenCV Assertion failed - convertTo
我正在尝试将矩阵转换为CV_32FC1以训练我的SVM。我总是收到错误消息msg:
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
我使用了一个gotHogFeatures-Method与
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
...
}
谢谢你的帮助。
您的转换代码似乎不正确。 应该是这样的:
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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.