Quantcast
Channel: OpenCV Q&A Forum - Latest question feed
Viewing all articles
Browse latest Browse all 19555

cv::OutOfMemoryError while calculating (surf)descriptors

$
0
0
I'm trying to set up an object recognition system with 12x30 images with 1280x1024 pixels. I'm using Visual Studio 2013, Windows 8.1 x64 with 8GB RAM and compile as x86. I get the following error message: > C:\opencv\sources\modules\core\src\alloc.cpp:52: error: (-4) Failed to allocate 74747652 bytes in function cv::OutOfMemoryError According to the Task Manager, my software needs less than 1.600.000K memory and the RAM is at 84%. So I think that should not be the problem. This is the code, where I get the error: cv::Ptr detector = cv::SurfFeatureDetector::create("SURF"); cv::Ptr extractor = cv::SurfDescriptorExtractor::create("SURF"); std::map> imageList; // Filling the imageList printMessageSlot("Starting: Compute Descriptors"); std::vector keypoints; cv::Mat descriptors; cv::Mat training_descriptors(1, extractor->descriptorSize(), extractor->descriptorType()); for (const auto &imgList : imageList) { for (const auto &img : imgList.second) { detector->detect(img, keypoints); extractor->compute(img, keypoints, descriptors); training_descriptors.push_back(descriptors); } } printMessageSlot("Ending: Compute Descriptors"); I'm not really sure what causes the problem. I tried to set the Heap and Stack Reservation Size in Visual Studio to 2GB, but I get the error message that there is not enought memory for that command. I really don't know how to solve this. I could try to read just one folder (corresponding to object class) of Images, calculate the descriptors and than override the Images with the next folder/class. But that feels like more complicated than it should be. How does it works, when I have more than that few (360) Images?

Viewing all articles
Browse latest Browse all 19555

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>