[英]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.