Які внутрішні роботи функції 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
, що може допомогти вам побачити, що відбувається.