OpenCV शतरंज के कोनों को कैसे खोजता है?


जवाबों:


12

OpenCV का स्रोत कोड उपलब्ध है, इसलिए मैं कोड के माध्यम से कुछ समय लेने की सलाह दूंगा। इस विशेष समारोह के लिए प्रासंगिक फ़ाइल है:

calib3d / src / calibinit.cpp

मैंने इसे विस्तार से नहीं देखा है, लेकिन यह ऐसा दिखता है

CV_IMPL
int cvFindChessboardCorners( const void* arr, CvSize pattern_size,
                             CvPoint2D32f* out_corners, int* out_corner_count,
                             int flags )

इस पद्धति का मुख्य कार्यान्वयन है। यहाँ वे में

  1. cvCheckChessboardयह निर्धारित करने के लिए उपयोग करें कि क्या एक बिसात छवि में है
  2. बाइनरी (B & W) में कनवर्ट करें और कोनों को अलग करने के लिए पतला करें
  3. icvGenerateQuadsवर्गों को खोजने के लिए उपयोग करें ।

कोड तब लगता है, हालांकि चेक का एक सेट इन quadsकोनों को समतल करने के लिए, सहित icvFindConnectedQuads, icvCleanFoundConnectedQuadsअतिरिक्त कोनों को हटाने के लिए icvCheckQuadGroup, और icvCheckBoardMonotony

इन कार्यों के सभी एक ही फाइल में लागू किया जाता है, के अलावा cvCheckChessboard, जिसमें है calib3d / src / checkchessboard.cpp । इस बात पर निर्भर करता है कि आप कोड को कितनी अच्छी तरह समझना चाहते थे, वहाँ कई डिबगिंग लाइनें प्रतीत होती हैं, जिन्हें यदि आप शामिल कर सकते हैं #define DEBUG_CHESSBOARD, तो यह देखने में आपकी मदद कर सकता है कि क्या हो रहा है।


1
आपके उत्तर के लिए धन्यवाद। मुझे पता है कि मैं इसे देख सकता था, लेकिन मैं सिर्फ उत्सुक था, लेकिन स्रोत कोड के माध्यम से जाने के लिए उत्सुक नहीं था। मुझे आशा है कि किसी ने इसे कुछ समय के लिए समझ लिया, और सिद्धांतों की व्याख्या कर सकते हैं :)
गेर्टन

1
मुझे एक अच्छी तरह से लिखा गया पेपर मिला ... जो कि एक वैकल्पिक विधि भी प्रदान करता है जो अधिक स्थिर और तेज़ है (लेखक के अनुसार) researchgate.net/publication/…
philippe
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.