Quais são as operações internas da função OpenCV findChessboardCorners ?
Quais são as operações internas da função OpenCV findChessboardCorners ?
Respostas:
O código-fonte do OpenCV está disponível, então eu recomendo levar algum tempo analisando o código. O arquivo relevante para esta função específica é:
Eu não olhei para ele em detalhes, mas parece que
CV_IMPL
int cvFindChessboardCorners( const void* arr, CvSize pattern_size,
CvPoint2D32f* out_corners, int* out_corner_count,
int flags )
é a principal implementação desse método. Aqui eles
cvCheckChessboard
para determinar se um tabuleiro de xadrez está na imagemicvGenerateQuads
para encontrar os quadrados. O código parece passar por um conjunto de verificações para condensá-las quads
nos cantos do tabuleiro de xadrez, incluindo icvFindConnectedQuads
, icvCleanFoundConnectedQuads
para remover cantos extras icvCheckQuadGroup
, e icvCheckBoardMonotony
.
Todas essas funções são implementadas no mesmo arquivo, além do cvCheckChessboard
que está em calib3d / src / checkchessboard.cpp . Dependendo de quão bem você quisesse entender o código, parece haver várias linhas de depuração, que podem ser incluídas se você #define DEBUG_CHESSBOARD
ajudar a ver o que está acontecendo.