2013-08-29 24 views
-1

我標籤我的圖片,但我的這部分代碼給我錯誤運行時錯誤,在這裏我給你的標籤給它,當我刪除此行代碼運行正常:爲什麼唱片公司給我的錯誤

int count_2=0; 
cv::Mat training_mat(num_img , dictionarySize,CV_32FC1); 
cv::Mat labels(0,1,CV_32FC1); 

for (k = all_names.begin(); k != all_names.end(); ++k) 
{ 
    Dir=((count_2 < files.size()) ? YourImagesDirectory : YourImagesDirectory_2); 

    Mat row_img_2 = cv::imread(Dir +*k, 0); 

    detector.detect(row_img_2, keypoints); 

    RetainBestKeypoints(keypoints, 20); 

    dextract.compute(row_img_2, keypoints, descriptors_1); 

    Mat my_img = descriptors_1.reshape(1,1); 

    my_img.convertTo(training_mat.row(count_2), CV_32FC1); 
    //training_mat.push_back(descriptors_1); 

    ***Here is the error*** 
    //labels.at<float>(count_2, 0) = (count_2<nb_face)?1:-1; // 1 for face, -1 otherwise*/ 
    ++count_2; 
} 

以上我的代碼的一部分,我想給1包含正面圖像的目錄和-1到圖像的目錄中包含負面圖像,nb_facefile.size()的正面圖像

回答

0

您需要給一個大小標籤矢量,當你創建它。 Otherwhise你得到一個錯誤,你使用越界標記訪問標籤向量。

所以試圖改變

cv::Mat labels(0,1,CV_32FC1); 

cv::Mat labels(num_img,1,CV_32FC1); 
+0

哪種方法更好用在這裏:my_img.convertTo(training_mat.row(_2),CV_32FC1);或training_mat.push_back(描述符_1); – Rocket

相關問題