Каковы внутренние функции функции OpenCV findChessboardCorners ?
Каковы внутренние функции функции OpenCV findChessboardCorners ?
Ответы:
Исходный код 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
, которые могут помочь вам увидеть, что происходит.