جستجو برای:
سبد خرید 0
  • خانه
  • محصولات
  • ویدئوهای آموزشی رایگان
  • مقالات
  • تماس با ما

ورود

گذرواژه خود را فراموش کرده اید؟

ثبت نام

داده های شخصی شما برای پشتیبانی از تجربه شما در این وب سایت، برای مدیریت دسترسی به حساب کاربری شما و برای اهداف دیگری که در سیاست حفظ حریم خصوصی ما شرح داده می شود مورد استفاده قرار می گیرد.

هوش مصنوعی رضوان
  • خانه
  • محصولات
  • ویدئوهای آموزشی رایگان
  • مقالات
  • تماس با ما
ورود / ثبت نام
0

وبلاگ

هوش مصنوعی رضوان > فایل های آموزشی رایگان > سیستم پلاک خوان خودرو با استفاده از پایتون

سیستم پلاک خوان خودرو با استفاده از پایتون

فایل های آموزشی رایگان

توضیحات ویدئو:

تشخیص پلاک خودرو یکی از کاربردهای مهم در حوزه بینایی ماشین است که برای بسیاری از برنامه‌ها و سیستم‌ها اساسی است. روش‌های مختلفی برای تشخیص پلاک خودرو وجود دارد، اما یکی از روش‌های معروف و کارآمد در این زمینه استفاده از روش کانتورها (Contours) است. در این ویدئو، با توضیحات کامل و کد نمونه، به شما نحوه استفاده از این روش برای تشخیص پلاک خودرو در پایتون را آموزش خواهیم داد.
 
برای شروع، باید اطمینان حاصل کنید که کتابخانه OpenCV را در پایتون نصب کرده‌اید OpenCV یک کتابخانه قدرتمند برای پردازش تصویر است و مجموعه‌ای از توابع و ابزارهای مرتبط با بینایی ماشین را برای ما فراهم می‌کند. ابتدا، باید تصویری که پلاک خودرو در آن قرار دارد را بارگیری کنید. می‌توانید از یک تصویر ثابت استفاده کنید یا از دوربین برای گرفتن تصاویر پلاک خودرو استفاده نمایید. سپس، تصویر را به سیاه و سفید تبدیل کنید. برای این کار می‌توانید از تابع cv2.cvtColor استفاده کنید و تصویر را به حالت سیاه و سفید تبدیل کنید.
 
بعد از آن، می‌توانید با استفاده از تابع cv2.findContours تمام کانتورهای موجود در تصویر را پیدا کنید. کانتورها، نواحی بسته روی تصویر را مشخص می‌کنند که می‌توانند پلاک خودرو را شامل شوند. سپس، نیاز دارید که بین کانتورها، کانتوری که پلاک خودرو را شامل می‌شود را تشخیص دهید. برای این کار، می‌توانید با استفاده از توابعی مانند cv2.contourArea و cv2.approxPolyDP، خصوصیات کانتورها را بررسی کنید و کانتور مربوط به پلاک خودرو را تشخیص دهید.
 
در مرحله بعد، می‌توانید با استفاده از تابع cv2.boundingRect، مستطیلی را بر روی پلاک خودرو نمایش دهید. این کار به شما امکان می‌دهد پلاک خودرو را به صورت بصری مشخص کنید. در نهایت، تصویر نهایی را نمایش دهید و نتیجه را بررسی کنید. می‌توانید این کد را در یک حلقه تکرار قرارداده و برای تشخیص پلاک خودرو در زمان واقعی از دوربین استفاده کنید.
 
در ادامه کد پایتون این برنامه را مشاهده می‌کنید:

کدهای پروژه:

import cv2 as cv
 
def read_image(image_path):
    return cv.imread(image_path)
 
 
def show_image(img, delay_ms=0):
    cv.imshow(“Image”, img)
    cv.waitKey(delay_ms)
    cv.destroyAllWindows()
 
 
def filter_image(img):
    # Binarize Image (Change Color Space)
    gray_img = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
    # Blurring (Smoothing)
    bilateral = cv.bilateralFilter(gray_img, 13, 75, 75)
    # Edge Detection
    edged = cv.Canny(bilateral, 30, 200)
    return edged
 
 
def get_contours(filtered_image):
    contours, _ = cv.findContours(
        filtered_image.copy(),
        cv.RETR_LIST,
        cv.CHAIN_APPROX_SIMPLE)
 
    sorted_contours = sorted(
        contours,
        key=cv.contourArea,
        reverse=True)[:10]
    return sorted_contours
 
def approximate_contours(contours):
    for contour in contours:
        perimeter = cv.arcLength(contour, True)
        epsilon = 0.02 * perimeter
        approx = cv.approxPolyDP(contour, epsilon, True)
        if len(approx) == 4:
            return approx
    return None
 
def roi(approx_cnt, img):
    x, y, w, h = cv.boundingRect(approx_cnt)
    return img[y:y+h, x:x+w]
_________________________________
#config
import os
class Config:
    BASE_DIR_PATH = os.path.dirname(os.path.abspath(__file__))
    SRC_DIR_PATH = os.path.join(BASE_DIR_PATH, “Plate_Licenses”)
    SRC_FILE_PATH = os.path.join(SRC_DIR_PATH, “plate_license_C.jpg”)
 
    def __init__(self):
        self.SRC_ABSOLUTE_PATH_LIST = list()
        for file_item in os.listdir(self.SRC_DIR_PATH):
            file_item_abs_path = os.path.join(self.SRC_DIR_PATH, file_item)
            self.SRC_ABSOLUTE_PATH_LIST.append(file_item_abs_path)
_________________________________________
#errors
 
class ContoursNotFoundError(Exception):
    pass
___________________________________________
#main
# Methods for finding plate licenses:
#   a) Machine Learning
#   b) Haar Cascades Method
#   c) Manually Method (Contours)
 
 
#‌ Worst case scenarios:
#   The contour fails to detect the license plate correctly
#        a) we have to again relay on Machine learning.
#        b) improve the quality of the picture.
 
 
# The accuracy depends on the clarity of image, orientation, light exposure.
 
 
if __name__ == “__main__”:
 
    from config import Config
    from errors import ContoursNotFoundError
 
    from license_plate_detection import (filter_image, read_image, get_contours,
                                         approximate_contours, roi, show_image)
 
    conf = Config()
 
    SRC_DIR_PATH = conf.SRC_DIR_PATH
    IMG_FILE_PATH = conf.SRC_FILE_PATH
    PLATE_LICENSES_ITEMS = conf.SRC_ABSOLUTE_PATH_LIST
 
    if IMG_FILE_PATH in PLATE_LICENSES_ITEMS:
        img = read_image(IMG_FILE_PATH)
        filtered_image = filter_image(img)
        sorted_contours = get_contours(filtered_image)
        approx_cnt = approximate_contours(sorted_contours)
 
        if approx_cnt is None:
            raise ContoursNotFoundError(“No contours detected”)
           
        roi_img = roi(approx_cnt, img)
        show_image(roi_img)
    else:
        raise FileNotFoundError(f”File not found at {SRC_DIR_PATH}”)
امیدواریم این پروژه برای شما مفید و کاربردی واقع شده باشد. هدف آکادمی هوش مصنوعی رضوان، به اشتراک ‌گذاری تجربیاتی ارزشمند در زمینه پردازش تصویر و هوش مصنوعی با شما مخاطب ارجمند است. لطفا از سایر آموزش‌های رایگان و دوره‌های آموزشی ما دیدن و ما را در شبکه‌های اجتماعی دنبال فرمایید.
قبلی لبه یابی آنلاین با پایتون
بعدی تشخیص چهره و چشم با پایتون

دیدگاهتان را بنویسید لغو پاسخ

جستجو برای:
دسته‌ها
  • فایل های آموزشی رایگان
  • مقالات
دسته‌های محصولات
  • دوره ها
  • عمومی
نوشته‌های تازه
  • تحولی نوین در صنعت بیمه با هوش مصنوعی
  • سیستم‌های توصیه‌گر: راهنمای جامع
  • ربات هوش مصنوعی چیست؟ اشتراکات و کاربردهای رباتیک و هوش مصنوعی
  • تعریف هوش مصنوعی در زنجیره تأمین
  • هوش مصنوعی احساسی: درک و تحلیل احساسات انسانی
درباره ما

هدف ما آموزش هوش مصنوعی با استفاده از پایتون و متلب می باشد تا بتوانیم موارد کاربردی آن را به شما عزیزان آموزش دهیم.

دسترسی سریع
  • دوره ها
  • تماس با ما
    نماد ها
    کلیه حقوق مادی و معنوی این سایت متعلق به هوش مصنوعی رضوان می‌باشد.
    اشتراک گذاری در شبکه های اجتماعی
    ارسال به ایمیل
    https://airezvan.com/?p=9318
    دسته بندی دوره ها
    دسته بندی بلاگ
    دوره های من
    دسته بندی دوره ها

    دوره ها

    • 3 دوره
    دسته بندی بلاگ

    فایل های آموزشی رایگان

    • 32 نوشته

    مقالات

    • 56 نوشته
    دوره های من
    برای مشاهده خریدهای خود باید وارد حساب کاربری خود شوید
    Facebook Twitter Youtube Instagram Whatsapp
    مرورگر شما از HTML5 پشتیبانی نمی کند.