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