मैं एक मजेदार प्रोजेक्ट कर रहा था: OpenCV का उपयोग करके एक इनपुट इमेज से एक सुडोकू को सॉल्व करना (जैसे कि Google गॉगल्स आदि में)। और मैंने कार्य पूरा कर लिया है, लेकिन अंत में मुझे एक छोटी सी समस्या मिली जिसके लिए मैं यहाँ आया।
मैंने OpenCV 2.3.1 के Python API का उपयोग करके प्रोग्रामिंग की।
नीचे मैंने यही किया :
- छवि पढ़ें
- आकृति ढूंढें
- अधिकतम क्षेत्रफल वाला एक चुनें, (और कुछ हद तक वर्ग के बराबर भी) .
कोने के बिंदु खोजें।
उदाहरण के लिए नीचे दिया गया है:
(यहां ध्यान दें कि हरी रेखा सुडोकू की वास्तविक सीमा से सही ढंग से मेल खाती है, इसलिए सुडोकू को सही ढंग से विकृत किया जा सकता है मजबूत>। अगली छवि देखें)
छवि को एक पूर्ण वर्ग में घुमाएँ
उदाहरण छवि:
ओसीआर निष्पादित करें (जिसके लिए मैंने अपने पास मौजूद विधि का उपयोग किया है) Simple Digit Recogn में दिया गया OpenCV-Python में ion OCR)
और इस विधि ने अच्छा काम किया।
समस्या:
इस चित्र पर चरण 4 को करने से निम्न परिणाम प्राप्त होता है:
खींची गई लाल रेखा मूल समोच्च है जो सुडोकू सीमा की वास्तविक रूपरेखा है।
खींची गई हरी रेखा अनुमानित समोच्च है जो होगी विकृत छवि की रूपरेखा।
निश्चित रूप से, सुडोकू के शीर्ष किनारे पर हरी रेखा और लाल रेखा के बीच अंतर है। इसलिए युद्ध करते समय, मुझे सुडोकू की मूल सीमा नहीं मिल रही है।
सुडोकू, यानी लाल रेखा या मैं लाल रेखा और हरी रेखा के बीच के अंतर को कैसे दूर कर सकता हूं? क्या OpenCV में इसके लिए कोई तरीका है?