在哪个c ++类中我可以找到cv :: findChessboardCorners()

时间:2013-09-05 10:16:26

标签: c++ opencv

有没有人知道这个功能  OpenCV中的cv::findChessboardCorners()是在c ++类中实现的,如果是,那么请使用哪一个 谢谢

3 个答案:

答案 0 :(得分:5)

  #include <opencv2/calib3d/calib3d.hpp>  ( L170 )

答案 1 :(得分:1)

我在信号处理堆栈交换中找到了来自this link的脚本的位置,该位置存在于第424行的文件calib3d/src/calibinit.cpp中。

CV_IMPL
int cvFindChessboardCorners( const void* arr, CvSize pattern_size,
                             CvPoint2D32f* out_corners, int* out_corner_count,
                             int flags )

答案包括对函数所涉及过程的描述:

  
      
  1. 使用cvCheckChessboard确定棋盘是否在图像中
  2.   
  3. 转换为二进制(B&amp; W)并扩展以分开角落
  4.   
  5. 使用icvGenerateQuads查找正方形。
  6.         

    然后代码似乎通过一组检查来压缩这些   四边形到棋盘角落,包括icvFindConnectedQuads,   icvCleanFoundConnectedQuads删除额外的角落,   icvCheckQuadGroup和icvCheckBoardMonotony。

         

    除了以外,所有这些功能都在同一个文件中实现   cvCheckChessboard位于calib3d/src/checkchessboard.cpp。   根据你想要理解代码的程度,似乎有   许多调试行,如果你#define可以包括在内   DEBUG_CHESSBOARD,可以帮助您了解正在发生的事情。

答案 2 :(得分:0)

源代码位于opencv/modules/calib3d/src/calibinit.cpp第219行的opencv存档中。快速查看here

int cvFindChessboardCorners( const void* arr, CvSize pattern_size,
                             CvPoint2D32f* out_corners, int* out_corner_count,
                             int flags )
{
 ....
}