Giter Club home page Giter Club logo

ablanco1950-licenseplate_findcontours_and_haarcascade's Introduction

ablanco1950-LicensePlate_FindContours_And_Haarcascade

Using together cv2's findcontours and Haarcascade license plate detection together with the application of an extensive set of filters applying on a restricted set of car registration plates of known format: the Spanish ones with NNNNAAA format, 14 are obtained hits in a sample of 21 photos (more than 66% hits). No need to label photos but the proccess takes a long time.

Requirements:

pytesseract

numpy

cv2

re

imutils

skimage (is scikit-image)

In the download directory you should find the downloaded test6Training.zip and must unzip folder: test6Training with all its subfolders, containing the images for the test. This directory must be in the same directory where you program LicensePlateFindContours.py ( unziping may create two directories with you name test6Training and the images may not be founded when executing it, it would be necessary copy of inner directory test6Training in the same directory where is LicensePlateFindContours.py)

from the download directory,

run:

LicensePlateFindContoursHaarcascade_SpanishLicense_WithMaxFilters.py

The types of messages presented are:

The name of the filter that has detected a possible license plate indicating whether it has been done by findcontours or haarcascade

Hit followed by the name of the filter that, applied, has resulted in pytesseract detecting the correct license plate number. That is posible because le name of each image is de number of license plate

Detected, pyteseract has decrypted a license plate number that does not match the true one, which is detected because the true registration number is part of the name of the jpg file that constitutes the photo

Messages indicated that the system is not dead, but in process, and the termination of processes due to excess time.

At the end of the processing of each license plate, the number plate that has been detected the most is assigned to the image

At the end of the whole process, the LicenseResults.txt file is obtained with the relationship between the true car license plate and the detected license plate for each car.

==========

Is also included:

LicensePlateFindContoursHaarcascade_InternationalLicense_WithMaxFilters.py

That deals with all types of license plates, not just Spanish ones. By not filtering car license plates by car license plate format, the hit rate drops to 36%.

For example: the car license plate 2537JJD appears misrecognized as 2537JJ0 (confuses the final D with a 0) when it would not have been recognized by the program that only deals with Spanish license plates by filtering the NNNNAAA format through it and verifying that in the last position there is a zero and not an alphabetic character.

Other projects presented on car license plate recognition:

https://github.com/ablanco1950/LicensePlate_FindContours

With labeled images:

https://github.com/ablanco1950/LicensePlate_CLAHE

https://github.com/ablanco1950/LicensePlateImage_ThresholdFiltered

References:

https://github.com/spmallick/mallick_cascades/tree/master/haarcascades, the well known haarcascade_russian_plate_number.xml

https://www.roboflow.com

https://blog.katastros.com/a?ID=01800-4bf623a1-3917-4d54-9b6a-775331ebaf05

https://github.com/ablanco1950/LicensePlate_CLAHE

https://gist.github.com/endolith/334196bac1cac45a4893#

https://stackoverflow.com/questions/46084476/radon-transformation-in-python

https://learnopencv.com/otsu-thresholding-with-opencv/

https://towardsdatascience.com/image-enhancement-techniques-using-opencv-and-python-9191d5c30d45

https://stackoverflow.com/questions/64530229/how-do-i-get-tesseract-to-read-the-license-plate-in-the-this-python-opencv-proje

https://stackoverflow.com/questions/21324950/how-can-i-select-the-best-set-of-parameters-in-the-canny-edge-detection-algorith

https://en.wikipedia.org/wiki/Kernel_(image_processing)

https://stackoverflow.com/questions/4993082/how-can-i-sharpen-an-image-in-opencv, answer 66

https://en.wikipedia.org/wiki/Kernel_(image_processing)

https://www.sicara.fr/blog-technique/2019-03-12-edge-detection-in-opencv

https://www.aprendemachinelearning.com/clasacion-de-images-en-python/

Note: On 03/13/2023, the best results are obtained with the https://github.com/ablanco1950/LicensePlate_Yolov8_Filters_PaddleOCR project, which would replace this one.

ablanco1950-licenseplate_findcontours_and_haarcascade's People

Contributors

ablanco1950 avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.