القراء مثلك يساعدون في دعم MUO. عند إجراء عملية شراء باستخدام الروابط الموجودة على موقعنا ، فقد نربح عمولة تابعة. اقرأ أكثر.

تقنية الكشف عن لوحة الترخيص والتعرف عليها لها العديد من التطبيقات. يمكن استخدامه في أنظمة الطرق ، ومواقف السيارات بدون تذاكر ، ومساكن التحكم في الوصول إلى المركبات ، وأكثر من ذلك. تجمع هذه التكنولوجيا بين رؤية الكمبيوتر والذكاء الاصطناعي.

ستستخدم Python لإنشاء برنامج للكشف عن لوحة الترخيص والتعرف عليها. سيأخذ البرنامج صورة الإدخال ويعالجها لاكتشاف لوحة الترخيص والتعرف عليها ، ثم يعرض أخيرًا أحرف لوحة الترخيص كإخراج.

إعداد بيئة بايثون

لمتابعة هذا البرنامج التعليمي بشكل مريح ، يجب أن تكون على دراية بأساسيات بايثون. يبدأ هذا بإعداد بيئة البرنامج.

قبل أن تبدأ في البرمجة ، تحتاج إلى تثبيت بعض المكتبات في بيئتك. افتح أي Python IDE وأنشئ ملف Python. قم بتشغيل كل أمر على الجهاز لتثبيت المكتبة المعنية. يجب أن يكون لديك سابقة تثبيت Python PIP على جهاز الكمبيوتر الخاص بك.

  • OpenCV-Python: ستستخدم هذه المكتبة للمعالجة المسبقة لصورة الإدخال وعرض صور الإخراج المختلفة.
    نقطة ثَبَّتَ OpenCV-Python
  • instagram viewer
  • إيموتيلس: ستستخدم هذه المكتبة لاقتصاص صورة الإدخال الأصلية بالعرض المطلوب.
    نقطة ثَبَّتَ إيموتيلس
  • pytesseract: ستستخدم هذه المكتبة لاستخراج أحرف لوحة الترخيص وتحويلها إلى سلاسل.
    نقطة ثَبَّتَ pytesseract
    تعتمد مكتبة pytesseract على Tesseract OCR محرك للتعرف على الشخصية.

ما هو Tesseract OCR وكيفية تثبيته على جهاز الكمبيوتر الخاص بك

Tesseract OCR هو محرك يمكنه ذلك يتعرف على شخصيات اللغة. يجب عليك تثبيته على جهاز الكمبيوتر الخاص بك قبل استخدام مكتبة pytesseract. لنفعل ذلك:

  1. افتح أي متصفح يستند إلى Chrome
  2. تحميل Tesseract OCR يثبت
  3. قم بتشغيل الإعداد وتثبيته مثل أي برنامج آخر

بعد إعداد البيئة وتثبيت tesseract OCR ، فأنت جاهز لتشفير البرنامج.

1. استيراد المكتبات

ابدأ باستيراد المكتبات التي قمت بتثبيتها في البيئة. يسمح لك استيراد المكتبات بالاتصال بوظائفها واستخدامها في المشروع.

يستورد السيرة الذاتية 2
يستورد إيموتيلس
يستورد pytesseract

تحتاج إلى استيراد ملف OpenCV-Python مكتبة مثل السيرة الذاتية 2. قم باستيراد المكتبات الأخرى باستخدام نفس الأسماء التي استخدمتها لتثبيتها.

2. أخذ المدخلات

ثم أشر pytesseract إلى الموقع حيث تم تثبيت محرك Tesseract. خذ صورة السيارة كمدخل باستخدام ملف cv2.imread وظيفة. استبدل اسم الصورة باسم الصورة التي تستخدمها. قم بتخزين الصورة في نفس المجلد مثل مشروعك لتسهيل الأمور.

pytesseract.pytesseract.tesseract_cmd = 'C: \\ Program Files \\ Tesseract-OCR \\ tesseract.exe'
original_image = cv2.imread ("image3.jpeg")

يمكنك استبدال الصورة المدخلة التالية بالصورة التي ترغب في استخدامها.

3. المعالجة المسبقة للإدخال

قم بتغيير حجم عرض الصورة إلى 500 بكسل. ثم قم بتحويل الصورة إلى تدرج رمادي مثل وظيفة الكشف عن حافة حكي يعمل فقط مع الصور ذات التدرج الرمادي. أخيرًا ، اتصل بـ ثنائي التصفية وظيفة لتقليل الضوضاء في الصورة.

original_image = imutils.resize (original_image، width = 500)
grey_image = cv2.cvtColor (original_image، cv2.COLOR_BGR2GRAY)
اللون الرمادي

4. الكشف عن لوحة الترخيص على الإدخال

الكشف عن لوحة الترخيص هو عملية تحديد الجزء الموجود في السيارة الذي يحتوي على رموز لوحة الترخيص.

إجراء كشف الحافة

ابدأ باستدعاء cv2.Canny الوظيفة التي ستكتشف تلقائيًا الحواف على الصورة المعالجة مسبقًا.

edged_image = cv2.Canny (صورة_رمادية ، 30 ، 200)

من هذه الحواف سنجد الخطوط العريضة.

البحث عن الملامح

اتصل ب cv2.findContours وظيفة وتمرير نسخة من صورة ذات حواف. ستكتشف هذه الوظيفة الخطوط العريضة. ارسم حول الخطوط التي تم اكتشافها على الصورة الأصلية باستخدام cv2.drawContours وظيفة. أخيرًا ، أخرج الصورة الأصلية مع رسم جميع الخطوط المرئية.

ملامح جديد = cv2.findContours (edged_image.copy ()، cv2.RETR_LIST، cv2.CHAIN_APPROX_SIMPLE)
img1 = original_image.copy ()
السيرة الذاتية 2.drawContours(IMG1, ملامح, -1, (0, 255, 0), 3)
cv2.imshow ("img1"، img1)

يقوم البرنامج برسم جميع الكفافات التي يجدها على صورة السيارة بشكل مميز.

بعد العثور على الملامح ، تحتاج إلى فرزها لتحديد أفضل المرشحين.

فرز الكنتور

افرز الكفاف بناءً على المنطقة 30 على الأقل. تجاهل تلك الموجودة أدناه حيث تقل احتمالية أن تكون محيط لوحة الترخيص. قم بعمل نسخة من الصورة الأصلية وارسم ملف أعلى 30 ملامح على الصورة. أخيرًا ، اعرض الصورة.

ملامح = مرتبة (خطوط الكنتور ، مفتاح = cv2.contourArea ، عكسي = حقيقي)[:30]

# يخزن كفاف لوحة الترخيص
screenCnt = لا أحد
img2 = original_image.copy ()

# يرسم أعلى 30 ملامح
السيرة الذاتية 2.drawContours(IMG2, ملامح, -1, (0, 255, 0), 3)
cv2.imshow ("img2"، img2)

هناك الآن خطوط أقل مما كانت عليه في البداية. الخطوط الوحيدة المرسومة هي تلك التي تم تقريبها لاحتواء لوحة الترخيص.

أخيرًا ، تحتاج إلى الالتفاف حول الخطوط التي تم فرزها وتحديد أي منها هو لوحة الأرقام.

التكرار على أفضل 30 شكلًا

قم بإنشاء حلقة من أجل حلقة حول الخطوط. ابحث عن المحيط ذي الزوايا الأربع وحدد محيطه وإحداثياته. قم بتخزين صورة المحيط الذي يحتوي على لوحة الترخيص. أخيرًا ، ارسم كفاف لوحة الترخيص على الصورة الأصلية واعرضها.

العد = 0
معرف x = 7

لـ c in contours:
# تقريبي كفاف لوحة الترخيص
contour_perimeter = cv2.arcLength (c ، حقيقي)
تقريبًا = cv2.approxPolyDP (c ، 0.018 * كفاف محيطي ، حقيقي)

# ابحث عن الخطوط ذات 4 زوايا
لولين(تقريبا)== 4:
screenCnt = تقريبًا

# ابحث عن إحداثيات كفاف لوحة الترخيص
x ، y ، w ، h = cv2.boundingRect (c)
new_img = original_image [y: y + h، x: x + w]

# يخزن الصورة الجديدة
cv2.imwrite ('./'+ str (idx) +'.بي إن جي'، new_img)
المعرف + = 1
استراحة

# يرسم كفاف لوحة الترخيص على الصورة الأصلية
السيرة الذاتية 2.drawContours(original_image, [screenCnt], -1, (0, 255, 0), 3)
cv2.imshow ("تم الكشف عن لوحة الترخيص"، original_image)

بعد التكرار ، حدد برنامجك المحيط الذي يحتوي على لوحة الترخيص. إنه يعتمد على كفاف لوحة الترخيص فقط.

5. التعرف على لوحة الترخيص المكتشفة

التعرف على لوحة الأرقام يعني قراءة الأحرف الموجودة على الصورة التي تم اقتصاصها من لوحة الترخيص. قم بتحميل صورة لوحة الترخيص التي قمت بتخزينها مسبقًا واعرضها. ثم اتصل ب pytesseract.image_to_string وظيفة وتمرير صورة لوحة الترخيص التي تم اقتصاصها. تقوم هذه الوظيفة بتحويل الأحرف في الصورة إلى سلسلة.

# اسم ملف صورة لوحة الترخيص التي تم اقتصاصها
cropped_License_Plate = "./7.png"
السيرة الذاتية 2.imshow("اقتصاصرخصةطبق", السيرة الذاتية 2.أنا أقرأ(اقتصاص_لوحة_الترخيص))

# يحول أحرف لوحة الترخيص إلى سلسلة
text = pytesseract.image_to_string (cropped_License_Plate ، lang ='eng')

تظهر لوحة الترخيص التي تم اقتصاصها أدناه. ستكون الأحرف الموجودة عليها هي الإخراج الذي ستطبعه لاحقًا على الشاشة.

بعد اكتشاف لوحة الترخيص والتعرف عليها ، فأنت جاهز لعرض الإخراج.

6. عرض الإخراج

هذه هي الخطوة النهائية. تقوم بطباعة النص المستخرج على الشاشة. يحتوي هذا النص على أحرف لوحة الترخيص.

مطبعة("لوحة الترخيص هي:"، نص)
السيرة الذاتية 2.waitKey(0)
السيرة الذاتية 2.destroyAllWindows()

يجب أن تكون المخرجات المتوقعة للبرنامج مماثلة للصورة أدناه:

يمكن رؤية نص لوحة الترخيص على الجهاز.

شحذ مهاراتك في بايثون

يعد اكتشاف لوحات ترخيص السيارات والتعرف عليها في Python مشروعًا مثيرًا للاهتمام للعمل عليه. إنه أمر صعب ، لذا يجب أن يساعدك على معرفة المزيد عن بايثون.

عندما يتعلق الأمر بالبرمجة ، فإن الممارسة هي جوهر إتقان اللغة. لممارسة مهاراتك ، تحتاج إلى العمل في مشاريع مثيرة للاهتمام.