OpenCV函数findChessboardCorners的内部工作原理是什么?
OpenCV函数findChessboardCorners的内部工作原理是什么?
Answers:
OpenCV的源代码可用,因此我建议您花一些时间来检查代码。此特定功能的相关文件是:
我没有详细研究,但看起来
CV_IMPL
int cvFindChessboardCorners( const void* arr, CvSize pattern_size,
CvPoint2D32f* out_corners, int* out_corner_count,
int flags )
是此方法的主要实现。他们在这里
cvCheckChessboard
以确定棋盘是图像中icvGenerateQuads
找到的平方。 然后,该代码似乎走不过一组检查凝结这些quads
到棋盘的角落,包括icvFindConnectedQuads
,icvCleanFoundConnectedQuads
删除多余的角落,icvCheckQuadGroup
和icvCheckBoardMonotony
。
所有这些功能都在同一个文件中实现,除了cvCheckChessboard
在calib3d / src / checkchessboard.cpp中。根据您对代码的理解程度,似乎有许多调试行,如果您可以包含在内,则#define DEBUG_CHESSBOARD
可能会帮助您了解发生了什么。