簡體   English   中英

OpenCV斷言失敗-convertTo

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM