У меня есть простой код, написанный в Visual Studio 2010 с openCV 2.4.10, который извлекает некоторые функции из некоторого входного файла.Обнаружение кучи OpenCV в режиме освобождения
Mat extractSIFT(Mat img)
{
cv::Ptr<cv::FeatureDetector> detector;
cv::Ptr<cv::Feature2D> descriptorExtractor;
detector = cv::FeatureDetector::create("Dense");
descriptorExtractor = cv::DescriptorExtractor::create("SIFT");
detector->set("initXyStep",GRID_SPACING);
vector<cv::KeyPoint> keypoints;
detector->detect(img,keypoints);
Mat o;
//Mat o(keypoints.size(),128,CV_8U);
descriptorExtractor->compute(img,keypoints,o);
return o;
}
Хотя этот код хорошо в режиме отладки (хотя и медленно) работает, он дает эту ошибку:
Windows has triggered a breakpoint in Prototype.exe.
This may be due to a corruption of the heap, which indicates a bug in Prototype.exe or any of the DLLs it has loaded.
This may also be due to the user pressing F12 while Prototype.exe has focus.
The output window may have more diagnostic information.
При дальнейшем расследовании, я обнаружил, что выходная переменная о не может рассматриваться в режиме выпуска (наведите указатель мыши), но может печатать значения на простом дампе консоли.
В дизассемблере:
848: //Mat o(keypoints.size(),128,CV_8U);
849: descriptorExtractor->compute(img,keypoints,o);
850:
851: return o;
013F6FCF 56 push esi
013F6FD0 8D 55 C0 lea edx,[keypoints]
013F6FD3 52 push edx
013F6FD4 8D 45 0C lea eax,[img]
013F6FD7 50 push eax
013F6FD8 8B CF mov ecx,edi
013F6FDA C7 45 F0 01 00 00 00 mov dword ptr [ebp-10h],1
013F6FE1 E8 42 35 02 00 call cv::Feature2D::compute (141A528h)
013F6FE6 8B 45 C0 mov eax,dword ptr [keypoints]
013F6FE9 3B C3 cmp eax,ebx
013F6FEB 74 09 je extractSIFT4+306h (13F6FF6h)
013F6FED 50 push eax
**013F6FEE E8 EC 5C 02 00 call operator delete (141CCDFh)**
013F6FF3 83 C4 04 add esp,4
Ошибка возникает в соответствии с звездочками. Я попробовал несколько свойств проекта (/ Md, MT, инкрементная сборка, ...) перекомпилировал openCV, проверенную версию платформы (v100), но безрезультатно.
, какие библиотеки вы Кинк против? – Micka
Kink? Что такое перегиб? Эта часть кода использует только opencv и dirent для списка папок – AutomaticHourglass
^^ link, ofc ... – berak