有谁知道
cv::findChessboardCorners()
OpenCV中的函数是否在c ++类中实现,如果是,请哪位
谢谢
问问题
2673 次
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 )
答案包括对函数所涉及的过程的描述:
- 使用 cvCheckChessboard 判断图像中是否有棋盘
- 转换为二进制 (B&W) 并扩张以将角分开
- 使用 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 回答