0

Я реализую Сумку слов Model с использованием функций SURF и SIFT и SVM-классификатора. Я хочу тренироваться (80% из 2876 изображений) и тестировать (20% из 2876 изображений). Я сохранил параметр dictionarySize равным 1000. Конфигурация моего компьютера - это Intel Xeon (2 процессора)/32 ГБ оперативной памяти/500 ГБ HDD. Здесь изображения считываются, когда это необходимо, вместо их хранения. как,Недостаточная ошибка памяти: сумка слов OpenCV 2.4.6 Visual Studio 2010

std::ifstream file("C:\\testFiles\\caltech4\\train0.csv", ifstream::in); 
    if (!file) 
    { 
     string error_message = "No valid input file was given, please check the given filename."; 
     CV_Error(CV_StsBadArg, error_message); 
    } 
    string line, path, classlabel; 
    printf("\nReading Training images................\n"); 
    while (getline(file, line)) 
    { 
     stringstream liness(line); 
     getline(liness, path, separator); 
     getline(liness,classlabel); 
     if(!path.empty()) 
     { 
      Mat image = imread(path, 0); 


      cout << " " << path << "\n"; 
      detector.detect(image, keypoints1); 
      detector.compute(image, keypoints1,descriptor1); 
      featuresUnclustered.push_back(descriptor1); 
     } 
    } 

Здесь train0.csv содержит пути к изображениям с этикетками. Он останавливается из этого цикла при чтении изображений, вычисляет дескриптор и добавляет его в кластерные функции. После apprears ошибок на консоли:

enter image description here

+0

Загрузка изображения похоже прекрасный. Вероятно, это объекты, которые слишком большие – Miki

+0

Как я могу использовать featuresUnclustered, поскольку я хочу использовать весь набор данных? – Alex

+0

Ну, сначала вы можете проверить, действительно ли проблема. – Miki

ответ

0

Здесь, в коде, я повторно размера изображения считываются с размером 256 * 256; требование памяти уменьшается. Эрго, ошибка исчезла.

 Mat image = imread(path, 0); 
     resize(image,image,Size(256,256)); 
     cout << " " << path << "\n"; 
     detector.detect(image, keypoints1); 
     detector.compute(image, keypoints1,descriptor1); 
     featuresUnclustered.push_back(descriptor1); 

Но это может показаться большим набором данных.