有没有人知道这个功能
OpenCV中的cv::findChessboardCorners()
是在c ++类中实现的,如果是,那么请使用哪一个
谢谢
答案 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 )
答案包括对函数所涉及过程的描述:
- 使用cvCheckChessboard确定棋盘是否在图像中
- 转换为二进制(B&amp; W)并扩展以分开角落
- 使用icvGenerateQuads查找正方形。
醇>然后代码似乎通过一组检查来压缩这些 四边形到棋盘角落,包括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 )
{
....
}