Ошибка подтверждения opencv findchessboardcorners

Я пытаюсь определить шаблон шахматной доски для калибровки камеры, используя OpenCV 2.4.2, в среде Windows 7 + MinGW.

Я получаю ошибку подтверждения при вызове функции findChessboard (). Утверждение происходит только тогда, когда шахматная доска появляется перед камерой.

Ошибка OpenCV: утверждение не выполнено (s> = 0) в файле setSize
C: \ opencv \ modules \ core \ src \ matrix.cpp, строка 115

Я также попробовал sample \ cpp \ calib.exe и получил там тот же результат. Пример исходного кода можно найти здесь:

http://code.opencv.org/projects/opencv/repository/revisions/c5aba337e995eef92704201be2e37773a63b3709/entry/samples/cpp/calibration.cpp

Посмотрите на строку 468-469:

found = findChessboardCorners( view, boardSize, pointbuf,
CV_CALIB_CB_ADAPTIVE_THRESH | CV_CALIB_CB_FAST_CHECK | CV_CALIB_CB_NORMALIZE_IMAGE);

Мой собственный код выглядит так:

cv::Size patternsize(5, 4), windowSize(11,11), zZone(0,0);
vector<Point2f> corners;

// Find corners
if (findChessboardCorners(gray, patternsize, corners,
CALIB_CB_ADAPTIVE_THRESH
+ CALIB_CB_NORMALIZE_IMAGE
+ CALIB_CB_FAST_CHECK)) {

cout << "pattern detected!";

cornerSubPix(gray, corners, windowSize, zZone,
TermCriteria(CV_TERMCRIT_EPS + CV_TERMCRIT_ITER, 30, 0.1));

// cv::drawChessboardCorners(gray, patternsize, Mat(corners), true);
}

Как упоминалось выше, управление никогда не попадает в оператор cout. Либо findChessboardCorners ничего не находит (возвращает false), либо утверждает (при обнаружении шахматной фигуры).

1

Решение

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

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

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