OpenCV 断言失败 - convertTo
OpenCV Assertion failed - convertTo
我正在尝试将我的矩阵转换为 CV_32FC1 以训练我的 SVM.I 总是收到错误消息:
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);
我已经尝试获取 returns 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);
我正在尝试将我的矩阵转换为 CV_32FC1 以训练我的 SVM.I 总是收到错误消息:
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);
我已经尝试获取 returns 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);