برنامه نویسی

جعبه محدودیت محصول + چرخش

چکیده

ما در حال پیشبرد عکس هستیم تا در نهایت OCR را فعال کنیم. ما جعبه های محدود برای عقب اتومبیل ها داریم. حال اجازه دهید پلاک ها را با عکس های برش خورده و چرخان مستطیل کنیم.

TOC (گام به گام)

گردش کار تشخیص پلاک تجسم شده

  1. نمای کلی: OpenCV در پایتون برای تشخیص پلاک پایان به پایان.

  2. تنظیم دوربین و رایانه. Raspberry Pi (RPI) ، Canon DSLR ، F-Stop و ISO.

  3. ضبط تصاویر از DSLR به RPI. خودکار ضبط تصاویر و انتقال به RPI.

  4. مدل تشخیص اتومبیل. مدل قطار از ابتدا با استفاده از YOLO و تصاویر دارای برچسب.

  5. جعبه محدودیت محصول + چرخش.
  6. TBD – الگویی برای یافتن پلاک ها. یک مدل دوم را با YOLO آموزش دهید.

  7. TBD – جعبه محدودیت محصول.

  8. TBD – پلاک را با OCR بخوانید. تصویر قبل از پردازش ، و متن را با OCR Paddle ECR استخراج کنید.

دستور العمل

اکنون ما مدل های شناسایی اتومبیل را در تصاویر پخش شده خود از دوربین داریم. هدف سطح بالا ما تصویر بریده شده فقط به پلاک برای خواندن OCR کاهش می یابد. این بدان معناست که پیدا کردن خودروها در تصویر (ماده 3) ، برداشت تصویر فقط به سپر عقب اتومبیل (این مقاله ؛ 4) ، تا بتوانیم پلاک (مقاله بعدی ؛ 5) و تصویر محصول را فقط به پلاک (ماده 6) پیدا کنیم.

این مرحله داخلی یک مرحله پردازش برای فعال کردن OCR است. به خصوص در تصاویر ضبط شده من توجه داشته باشید که تصاویر هر دو به پایین نگاه می کنند ، بلکه از طرف دور نیز از اتومبیل ها هستند. این اجتناب از ویژگی مهم برای کاهش است. OCR انتظار یک نمای مستقیم را دارد ، بنابراین بخشی از این مرحله نیز تصحیح می شود (با چرخش).

در این مرحله جعبه محدود برای هر ماشین داریم. ما به طور بالقوه در هر تصویر چندین اتومبیل داریم – بنابراین در این مرحله حلقه ای است که تمام مراحل زیر را چنگ می زند (برای هر اتومبیل: صفحه مجوز ، محصول ، OCR ، تکرار) را تشخیص دهید.

اول ، ما در حال جمع آوری تصویر فقط جعبه محدود از مدل در مرحله 3 هستیم و می چرخیم تا با دیدگاه اجتناب شده دوربین در رابطه با بزرگراه مطابقت داشته باشیم.

  1. برای هر جعبه محدود (یعنی برای هر ماشین)
    نمونه گرفتن بزرگراه
    تصویر ورودی مدل را اجرا کنید ، جعبه های محدود (اتومبیل) را پیدا کنید.

  2. محصول را به سپر عقب بپردازید و برای تصحیح اجتناب از آن بچرخید

    تصاویر خرد شده 2x از اتومبیل ها

تصاویر خروجی با مشاهده واضح تر از پلاک ، فقط به سپر عقب می پردازند. توجه داشته باشید مصنوعات چرخش در گوشه و کنار. اکنون ، مجوز مستقیماً برای OCR آسان تر است.

from ultralytics import YOLO
import cv2 
import imutils
import numpy as np
from os import path

baseDir = '/Users/japollock/Projects/TrainHighwayCarDetector/'
inputFilePath = baseDir + 'photos/yolo_cars/all/IMG_4553.jpg'
inputFileName = path.basename(inputFilePath)
outputPhotosDir = baseDir + 'photos/yolo_cars/licensePlates/'
model = YOLO(baseDir + 'src/runs/detect/yolov8m_v21_100e/weights/best.pt')

imageOriginal = cv2.imread(inputFilePath)
imageScaled = imutils.resize(imageOriginal, width=1280)

imgRatio = imageOriginal.shape[1] / imageScaled.shape[1]

results = model.predict(source=imageScaled, imgsz=1280)

j=0
for box in results[0].boxes:
    j += 1
    # bounding box in scaled-down image
    x1Float = box.xyxy[0][0].item()
    x2Float = box.xyxy[0][2].item()
    y1Float = box.xyxy[0][1].item()
    y2Float = box.xyxy[0][3].item()

    # calc bounding box in original (scaled-up) image
    x1 = int(imgRatio * x1Float)
    y1 = int(imgRatio * y1Float)
    x2 = int(imgRatio * x2Float)
    y2 = int(imgRatio * y2Float)

    # cropped
    imageCropped = imageOriginal[y1:y2,x1:x2]

    # rotated
    image_center = tuple(np.array(imageCropped.shape[1::-1]) / 2)
    rot_mat = cv2.getRotationMatrix2D(image_center, 4.7, 1.0)
    imageRotated = cv2.warpAffine(imageCropped, rot_mat, imageCropped.shape[1::-1], flags=cv2.INTER_LINEAR)

    outputFilePath = outputPhotosDir + inputFileName[0:(len(inputFileName)-4)] + '_' + format(j,'04d') + '.jpg'
    cv2.imwrite(outputFilePath, imageRotated)
    print('Wrote ' + outputFilePath)
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

اکنون تصویر به وضوح پلاک را نشان می دهیم. ما هنوز باید قبل از واگذاری OCR ، تقویت را تقویت کنیم. بنابراین مانند گذشته تکرار کنید: پلاک را در تصویر فعلی خرد شده پیدا کنید تا متعاقباً محصول را فقط به پلاک بپردازید. بعدی: مدل YOLO برای پلاک ها!

لینک بعدی: TBD – مدل تشخیص پلاک در تصویر بریده شده

پیوست: نکات جالب

  • چرخش (2D) ، و نه پیچ و تاب دید (3D) تکامل فرآیند بود. در ابتدا فکر می کردم از طریق چشم انداز از طریق هموگرافی استفاده می کنم ، همانطور که می دانستم چگونه. اما داستان کوتاه ، فهمیدم که پس از تینک در راه حل ، مهندسی بیش از حد است. چرا تلاش برای محاسبه چشم انداز WARP از دوربین من به بزرگراه ، هنگامی که چرخش ساده تصویر نیز به همان اندازه کار می کند – و بسیار ساده تر است؟

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا