Quels sont les fonctionnements internes de la fonction OpenCV findChessboardCorners ?
la source
Quels sont les fonctionnements internes de la fonction OpenCV findChessboardCorners ?
Le code source d'OpenCV est disponible, je vous recommande donc de prendre un peu de temps pour parcourir le code. Le fichier correspondant à cette fonction particulière est:
Je ne l'ai pas examiné en détail, mais on dirait
CV_IMPL
int cvFindChessboardCorners( const void* arr, CvSize pattern_size,
CvPoint2D32f* out_corners, int* out_corner_count,
int flags )
est la principale implémentation de cette méthode. Ici, ils
cvCheckChessboard
pour déterminer si un échiquier est dans l'imageicvGenerateQuads
pour trouver les carrés. Le code semble donc aller si un ensemble de contrôles pour condenser ces quads
aux coins échiquiers, y compris icvFindConnectedQuads
, icvCleanFoundConnectedQuads
pour enlever les coins supplémentaires, icvCheckQuadGroup
et icvCheckBoardMonotony
.
Toutes ces fonctions sont implémentées dans le même fichier, à l'exception de celui cvCheckChessboard
qui est dans calib3d / src / checkchessboard.cpp . Selon la façon dont vous vouliez comprendre le code, il semble y avoir un certain nombre de lignes de débogage, qui peuvent être incluses si vous le souhaitez #define DEBUG_CHESSBOARD
, qui peuvent vous aider à voir ce qui se passe.