opencv findchessboardcorners断言失败

时间:2012-10-02 10:31:43

标签: c++ opencv assert camera-calibration

我试图在Windows 7 + MinGW环境中使用OpenCV 2.4.2检测用于摄像机校准目的的棋盘图案。

调用findChessboard()函数时出现断言失败。断言只发生在棋盘进入摄像机时。

  

OpenCV错误:setSize文件中的断言失败(s> = 0)   C:\ opencv \ modules \ core \ src \ matrix.cpp,第115行

我也试过了样本\ cpp \ calibration.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)或断言(当检测到棋盘图案时)。

0 个答案:

没有答案