Các hoạt động nội bộ của chức năng OpenCV findChessboardCorners là gì?
Các hoạt động nội bộ của chức năng OpenCV findChessboardCorners là gì?
Câu trả lời:
Mã nguồn của OpenCV có sẵn, vì vậy tôi khuyên bạn chỉ nên dành chút thời gian để xem mã. Các tập tin liên quan cho chức năng cụ thể này là:
Tôi đã không nhìn vào nó một cách chi tiết, nhưng có vẻ như
CV_IMPL
int cvFindChessboardCorners( const void* arr, CvSize pattern_size,
CvPoint2D32f* out_corners, int* out_corner_count,
int flags )
là thực hiện chính của phương pháp này. Ở đây họ
cvCheckChessboard
để xác định xem bàn cờ có trong hình ảnh khôngicvGenerateQuads
để tìm các hình vuông. Mã sau đó dường như đi qua một tập hợp các kiểm tra để cô đọng những thứ này quads
vào các góc bàn cờ, bao gồm icvFindConnectedQuads
, icvCleanFoundConnectedQuads
để loại bỏ các góc bổ sung icvCheckQuadGroup
, và icvCheckBoardMonotony
.
Tất cả các chức năng này được thực hiện trong cùng một tệp, ngoài ra cvCheckChessboard
còn có trong calib3d / src / checkchessboard.cpp . Tùy thuộc vào mức độ bạn muốn hiểu mã, dường như có một số dòng gỡ lỗi, có thể được bao gồm nếu bạn #define DEBUG_CHESSBOARD
, điều đó có thể giúp bạn thấy những gì đang diễn ra.