Jakie są wewnętrzne funkcje funkcji OpenCV findChessboardCorners ?
Jakie są wewnętrzne funkcje funkcji OpenCV findChessboardCorners ?
Odpowiedzi:
Kod źródłowy OpenCV jest dostępny, więc polecam poświęcić mu trochę czasu. Odpowiedni plik dla tej konkretnej funkcji to:
Nie zagłębiłem się w to szczegółowo, ale wygląda na to
CV_IMPL
int cvFindChessboardCorners( const void* arr, CvSize pattern_size,
CvPoint2D32f* out_corners, int* out_corner_count,
int flags )
jest główną implementacją tej metody. Tutaj oni
cvCheckChessboard
aby określić, czy szachownica jest na obrazieicvGenerateQuads
aby znaleźć kwadraty. Wydaje się, że kod przechodzi przez zestaw kontroli, aby skondensować je quads
w rogach szachownicy, w tym icvFindConnectedQuads
w icvCleanFoundConnectedQuads
celu usunięcia dodatkowych narożników icvCheckQuadGroup
i icvCheckBoardMonotony
.
Wszystkie te funkcje są zaimplementowane w tym samym pliku, oprócz cvCheckChessboard
którego znajduje się w calib3d / src / checkchessboard.cpp . W zależności od tego, jak dobrze chciałeś zrozumieć kod, wydaje się, że istnieje wiele linii debugowania, które mogą być dołączone, jeśli możesz #define DEBUG_CHESSBOARD
, które mogą pomóc ci zobaczyć, co się dzieje.