Нарушение доступа с использованием флангового сопоставителя

Я сталкиваюсь с очень раздражающей проблемой, когда я создаю объект FalnnBaseMatcher.

Код следующий, и он отлично работал на Ubuntu в Eclipse.

#include <iostream>
#include "C:\openCv\opencv\build\include\opencv2\core\core.hpp"#include "C:\openCv\opencv\build\include\opencv2\highgui\highgui.hpp"#include "C:\openCv\opencv\build\include\opencv2\imgproc\imgproc.hpp"#include "C:\openCv\opencv\build\include\opencv2\features2d\features2d.hpp"#include "C:\openCv\opencv\build\include\opencv2\nonfree\nonfree.hpp"
using namespace std;
using namespace cv;
int main(){

cv::VideoCapture cap("video2.mp4");

if(!cap.isOpened()){  // check if we succeeded
return -1;
}

Mat frame; // creates the object frame

FlannBasedMatcher matcher; //create object matcherreturn 0;
}

это компилируется, но когда я бегу, я получил нарушение прав доступа. Я попытался разделить проблему, и я понял, что у меня есть эта ошибка, когда я создаю объект FlannBasedMatcher matcher;

Любая помощь принята, большое спасибо.

Я использую Visual Studio Express Edition 2012 и OpenCV 242 под Windows 7.

Теперь, слегка изменив код, я получаю прерывание в free.c

/***

* free.c — бесплатная запись в куче
*
* Авторские права (c) Microsoft Corporation. Все права защищены.
*
*Цель:
* Определяет следующие функции:
* free () — освобождает блок памяти в куче
*
************************************************** ***************************** /

#include <cruntime.h>
#include <malloc.h>
#include <winheap.h>
#include <windows.h>
#include <internal.h>
#include <mtdll.h>
#include <dbgint.h>
#include <rtcsup.h>

/***
*void free(pblock) - free a block in the heap
*
*Purpose:
*       Free a memory block in the heap.
*
*       Special ANSI Requirements:
*
*       (1) free(NULL) is benign.
*
*Entry:
*       void *pblock - pointer to a memory block in the heap
*
*Return:
*       <void>
*
*******************************************************************************/

void __cdecl _free_base (void * pBlock)
{

int retval = 0;if (pBlock == NULL)
return;

RTCCALLBACK(_RTC_Free_hook, (pBlock, 0));

retval = HeapFree(_crtheap, 0, pBlock);
if (retval == 0)
{
errno = _get_errno_from_oserr(GetLastError());
}
}

Прерывание в: if (retval == 0)

РЕШИТЬ!

Я перестроил openCv для VisualStudio 2012 с помощью cMake и теперь работает нормально.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]