การทำงานภายในของฟังก์ชั่น 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
ซึ่งอาจช่วยให้คุณเห็นสิ่งที่เกิดขึ้น