2

有谁知道 cv::findChessboardCorners()OpenCV中的函数是否在c ++类中实现,如果是,请哪位
谢谢

4

3 回答 3

5
  #include <opencv2/calib3d/calib3d.hpp>  ( L170 )
于 2013-09-05T10:59:17.233 回答
1

我从Signal Processing Stack Exchange 的这个链接中找到了脚本的位置,该位置存在于文件calib3d/src/calibinit.cpp的第 424 行。

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

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

  1. 使用 cvCheckChessboard 判断图像中是否有棋盘
  2. 转换为二进制 (B&W) 并扩张以将角分开
  3. 使用 icvGenerateQuads 找到正方形。

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

除了calib3d/src/checkchessboard.cpp中的 cvCheckChessboard 之外,所有这些函数都在同一个文件中实现。根据您对代码的理解程度,似乎有许多调试行,如果您 #define DEBUG_CHESSBOARD 可以包括在内,这可能有助于您了解发生了什么。

于 2017-08-09T09:04:12.220 回答
0

源代码可在opencv/modules/calib3d/src/calibinit.cpp第 219 行的 opencv 存档中找到。在这里快速浏览一下。

int cvFindChessboardCorners( const void* arr, CvSize pattern_size,
                             CvPoint2D32f* out_corners, int* out_corner_count,
                             int flags )
{
 ....
}
于 2013-09-05T11:55:09.467 回答