आप जैसे पाठक MUO का समर्थन करने में मदद करते हैं। जब आप हमारी साइट पर लिंक का उपयोग करके खरीदारी करते हैं, तो हम संबद्ध कमीशन अर्जित कर सकते हैं। और पढ़ें।

लाइसेंस प्लेट पहचान और पहचान तकनीक के कई अनुप्रयोग हैं। इसका उपयोग सड़क प्रणालियों, बिना टिकट पार्किंग स्थल, वाहन अभिगम नियंत्रण आवासों, और बहुत कुछ में किया जा सकता है। यह तकनीक कंप्यूटर विजन और आर्टिफिशियल इंटेलिजेंस को जोड़ती है।

आप लाइसेंस प्लेट पहचान और पहचान कार्यक्रम बनाने के लिए पायथन का उपयोग करेंगे। कार्यक्रम इनपुट छवि लेगा, इसे लाइसेंस प्लेट का पता लगाने और पहचानने के लिए संसाधित करेगा, और अंत में लाइसेंस प्लेट के पात्रों को आउटपुट के रूप में प्रदर्शित करेगा।

पायथन पर्यावरण की स्थापना

इस ट्यूटोरियल को आसानी से पूरा करने के लिए, आपको Python के बेसिक्स से परिचित होने की आवश्यकता है। यह कार्यक्रम के वातावरण की स्थापना के साथ शुरू होता है।

इससे पहले कि आप कोडिंग शुरू करें, आपको अपने परिवेश में कुछ लाइब्रेरी स्थापित करने की आवश्यकता है। कोई भी Python IDE खोलें और Python फ़ाइल बनाएँ। संबंधित लाइब्रेरी को स्थापित करने के लिए टर्मिनल पर प्रत्येक कमांड चलाएँ। आपके पास एक पूर्व होना चाहिए आपके कंप्यूटर पर पायथन पीआईपी की स्थापना।

instagram viewer
  • ओपनसीवी-पायथन: आप इस लाइब्रेरी का उपयोग इनपुट छवि को प्रीप्रोसेस करने और विभिन्न आउटपुट छवियों को प्रदर्शित करने के लिए करेंगे।
    रंज स्थापित करना ओपनसीवी-पायथन
  • imutils: आप इस लाइब्रेरी का उपयोग मूल इनपुट छवि को वांछित चौड़ाई में क्रॉप करने के लिए करेंगे।
    रंज स्थापित करना imutils
  • pytesseract: आप इस लाइब्रेरी का उपयोग लाइसेंस प्लेट के पात्रों को निकालने और उन्हें स्ट्रिंग्स में बदलने के लिए करेंगे।
    रंज स्थापित करना pytesseract
    पाइटेसेरेक्ट लाइब्रेरी इस पर निर्भर करती है टेसरैक्ट ओसीआर चरित्र पहचान के लिए इंजन।

Tesseract OCR क्या है और इसे अपने कंप्यूटर पर कैसे स्थापित करें

Tesseract OCR एक इंजन है जो कर सकता है किसी भाषा के वर्णों को पहचानें. पाइटेसेरेक्ट लाइब्रेरी का उपयोग करने से पहले आपको इसे अपने कंप्यूटर पर स्थापित करना चाहिए। ऐसा करने के लिए:

  1. कोई भी क्रोम-आधारित ब्राउज़र खोलें
  2. डाउनलोड करें टेसरैक्ट ओसीआर स्थापित करना
  3. सेटअप चलाएँ और इसे किसी अन्य प्रोग्राम की तरह स्थापित करें

परिवेश तैयार करने और Tesseract OCR स्थापित करने के बाद, आप प्रोग्राम को कोड करने के लिए तैयार हैं।

1. पुस्तकालयों का आयात करना

वातावरण में आपके द्वारा स्थापित पुस्तकालयों को आयात करके प्रारंभ करें। पुस्तकालयों को आयात करने से आप परियोजना में उनके कार्यों को कॉल और उपयोग कर सकते हैं।

आयात cv2
आयात imutils
आयात pytesseract

आपको आयात करने की आवश्यकता है ओपनसीवी-पायथन पुस्तकालय के रूप में cv2. अन्य पुस्तकालयों को उन्हीं नामों का उपयोग करके आयात करें जिनका उपयोग आपने उन्हें स्थापित करने के लिए किया था।

2. इनपुट ले रहा है

फिर pytesseract को उस स्थान पर इंगित करें जहां Tesseract इंजन स्थापित है। का उपयोग करके कार की छवि को इनपुट के रूप में लें cv2.imread समारोह। छवि का नाम उस छवि के नाम से बदलें जिसका आप उपयोग कर रहे हैं। चीजों को आसान रखने के लिए छवि को अपने प्रोजेक्ट के समान फ़ोल्डर में संग्रहीत करें।

pytesseract.pytesseract.tesseract_cmd = 'C:\\Program Files\\Tesseract-OCR\\tesseract.exe'
मूल_छवि = cv2.imread ('इमेज3.जेपीईजी')

आप निम्न इनपुट छवि को उस छवि से बदल सकते हैं जिसका आप उपयोग करना चाहते हैं।

3. इनपुट को प्रीप्रोसेस करना

छवि की चौड़ाई को 500 पिक्सेल में बदलें। फिर छवि को ग्रेस्केल में बदलें कैनी एज डिटेक्शन फंक्शन केवल ग्रेस्केल छवियों के साथ काम करता है। अंत में कॉल करें द्विपक्षीय फ़िल्टर छवि में शोर को कम करने के लिए कार्य करें।

original_image = imutils.resize (मूल_छवि, चौड़ाई=500 )
ग्रे_इमेज = cv2.cvtColor (ओरिजनल_इमेज, cv2.COLOR_BGR2GRAY)
ग्रे_इमेज = cv2.bilateralFilter (ग्रे_इमेज, 11, 17, 17)

4. इनपुट पर लाइसेंस प्लेट का पता लगाना

लाइसेंस प्लेट का पता लगाना कार पर उस हिस्से को निर्धारित करने की प्रक्रिया है जिसमें लाइसेंस प्लेट के पात्र हैं।

एज डिटेक्शन का प्रदर्शन

कॉल करके शुरू करें cv2.कैनी फ़ंक्शन जो स्वचालित रूप से पूर्वसंसाधित छवि पर किनारों का पता लगाएगा।

edged_image = cv2.कैनी (ग्रे_इमेज, 30, 200)

यह इन किनारों से है कि हम रूपरेखाएँ खोजेंगे।

रूपरेखाओं का पता लगाना

बुलाएं cv2.findContours कार्य करें और इसकी एक प्रति पास करें किनारा छवि. यह फ़ंक्शन आकृति का पता लगाएगा। का उपयोग करके मूल छवि पर पता लगाए गए समोच्चों के चारों ओर ड्रा करें cv2.drawContours समारोह। अंत में, खींचे गए सभी दृश्यमान समोच्चों के साथ मूल छवि को आउटपुट करें।

रूपरेखा, नया = cv2.findContours (edged_image.copy (), cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
img1 = original_image.copy ()
cv2.drawContours(img1, आकृति, -1, (0, 255, 0), 3)
cv2.imshow ("आईएमजी1", आईएमजी1)

कार्यक्रम उन सभी रूपों को खींचता है जो इसे कार की छवि पर विशिष्ट रूप से मिलते हैं।

रूपरेखा खोजने के बाद आपको सर्वश्रेष्ठ उम्मीदवारों की पहचान करने के लिए उन्हें क्रमबद्ध करना होगा।

आकृतियाँ छाँटना

न्यूनतम क्षेत्रफल 30 के आधार पर रूपरेखाओं को क्रमबद्ध करें। नीचे दिए गए पर ध्यान न दें क्योंकि उनके लाइसेंस प्लेट समोच्च होने की संभावना कम है। मूल छवि की प्रतिलिपि बनाएँ और चित्र बनाएँ शीर्ष 30 छवि पर रूपरेखा। अंत में, छवि प्रदर्शित करें।

समोच्च = क्रमबद्ध (आकृति, कुंजी = cv2.contourArea, रिवर्स = सत्य)[:30]

# लाइसेंस प्लेट कंटूर को स्टोर करता है
स्क्रीनसीएनटी = कोई नहीं
img2 = original_image.copy ()

# शीर्ष 30 रूपरेखाएँ बनाता है
cv2.drawContours(img2, आकृति, -1, (0, 255, 0), 3)
cv2.imshow ("आईएमजी2", आईएमजी2)

शुरुआत की तुलना में अब कम रूपरेखाएँ हैं। खींची गई केवल रूपरेखा वही होती है जिसमें लाइसेंस प्लेट शामिल होती है।

अंत में, आपको सॉर्ट किए गए समोच्चों पर लूप करने और यह निर्धारित करने की आवश्यकता है कि नंबर प्लेट कौन सी है।

शीर्ष 30 रूपरेखाओं पर लूपिंग

समोच्चों पर लूप करने के लिए for लूप बनाएं। चार कोनों के साथ समोच्च देखें, और इसकी परिधि और निर्देशांक निर्धारित करें। लाइसेंस प्लेट वाले समोच्च की छवि को संग्रहित करें। अंत में, मूल छवि पर लाइसेंस प्लेट समोच्च बनाएं और इसे प्रदर्शित करें।

गिनती = 0
आईडीएक्स = 7

सी के लिए समोच्च में:
# लाइसेंस प्लेट समोच्च का अनुमान लगाएं
समोच्च_पेरीमीटर = cv2.arcLength (सी, सत्य)
लगभग = cv2.approxPolyDP (सी, 0.018 * समोच्च_परिधि, सत्य)

# 4 कोनों के साथ समोच्च खोजें
अगरलेन(लगभग)== 4:
स्क्रीनसीएनटी = लगभग

# लाइसेंस प्लेट समोच्च के निर्देशांक खोजें
एक्स, वाई, डब्ल्यू, एच = cv2.boundingRect (सी)
new_img = original_image [y: y + h, x: x + w]

# नई छवि संग्रहीत करता है
cv2.imwrite ('./'+ स्ट्र (आईडीएक्स) +'पीएनजी', नया_आईएमजी)
आईडीएक्स + = 1
तोड़ना

# मूल छवि पर लाइसेंस प्लेट समोच्च खींचता है
cv2.drawContours(मूल छवि, [स्क्रीनसीएनटी], -1, (0, 255, 0), 3)
cv2.imshow ("पता चला लाइसेंस प्लेट", मूल छवि )

लूपिंग के बाद, आपके प्रोग्राम ने लाइसेंस प्लेट वाले कंटूर की पहचान की है। यह लाइसेंस प्लेट समोच्च पर ही खींचती है।

5. पहचानी गई लाइसेंस प्लेट को पहचानना

नंबर प्लेट को पहचानने का मतलब है लाइसेंस प्लेट की क्रॉप्ड इमेज पर अक्षरों को पढ़ना। आपके द्वारा पहले संग्रहित की गई लाइसेंस प्लेट छवि को लोड करें और इसे प्रदर्शित करें। फिर, कॉल करें pytesseract.image_to_string क्रॉप की गई लाइसेंस प्लेट छवि को कार्य करें और पास करें। यह फ़ंक्शन छवि में वर्णों को एक स्ट्रिंग में परिवर्तित करता है।

# क्रॉप की गई लाइसेंस प्लेट छवि का फ़ाइल नाम
क्रॉप_लाइसेंस_प्लेट = './7.png'
cv2.imshow("काट-छांट कीलाइसेंसतश्तरी", cv2.imread(क्रॉप_लाइसेंस_प्लेट))

# लाइसेंस प्लेट वर्णों को स्ट्रिंग में परिवर्तित करता है
पाठ = pytesseract.image_to_string (cropped_License_Plate, lang='इंजी')

क्रॉप्ड लाइसेंस प्लेट नीचे दिखाई गई है। इस पर वर्ण आउटपुट होंगे जिन्हें आप बाद में स्क्रीन पर प्रिंट करेंगे।

लाइसेंस प्लेट का पता लगाने और पहचानने के बाद, आप आउटपुट प्रदर्शित करने के लिए तैयार हैं।

6. आउटपुट प्रदर्शित करना

यह अंतिम चरण है। आप निकाले गए पाठ को स्क्रीन पर प्रिंट करते हैं। इस टेक्स्ट में लाइसेंस प्लेट के अक्षर हैं।

छपाई("लाइसेंस प्लेट है:", मूलपाठ)
cv2.प्रतीक्षा करें(0)
cv2.destroyAllWindows()

कार्यक्रम का अपेक्षित आउटपुट नीचे दी गई छवि के समान होना चाहिए:

लाइसेंस प्लेट टेक्स्ट को टर्मिनल पर देखा जा सकता है।

अपने पायथन कौशल को तेज करें

पायथन में कार लाइसेंस प्लेट्स का पता लगाना और पहचानना काम करने के लिए एक दिलचस्प परियोजना है। यह चुनौतीपूर्ण है, इसलिए इससे आपको पायथन के बारे में और जानने में मदद मिलेगी।

जब प्रोग्रामिंग की बात आती है, तो अभ्यास भाषा की महारत के लिए महत्वपूर्ण है। अपने कौशल का अभ्यास करने के लिए, आपको दिलचस्प परियोजनाओं पर काम करने की जरूरत है।