Skip to content
Mì AI Mì AI Mì AI

Học AI theo cách Mì ăn liền!

Mì AI Mì AI Mì AI

Học AI theo cách Mì ăn liền!

  • Trang chủ
  • Kênh Youtube
  • Facebook Group
  • Nói về chủ tiệm Mì
  • Trang chủ
  • Kênh Youtube
  • Facebook Group
  • Nói về chủ tiệm Mì
Close

Search

  • Trang chủ
  • Kênh Youtube
  • Facebook Group
  • Nói về chủ tiệm Mì
Mì AI Mì AI Mì AI

Học AI theo cách Mì ăn liền!

Mì AI Mì AI Mì AI

Học AI theo cách Mì ăn liền!

  • Trang chủ
  • Kênh Youtube
  • Facebook Group
  • Nói về chủ tiệm Mì
  • Trang chủ
  • Kênh Youtube
  • Facebook Group
  • Nói về chủ tiệm Mì
Close

Search

  • Trang chủ
  • Kênh Youtube
  • Facebook Group
  • Nói về chủ tiệm Mì
Computer Vision

[Nhận diện biển số xe] Chương 3 – Phát hiện biển số bằng OpenCV thuần

By Chủ tiệm Mì
November 26, 2019 4 Min Read
17

Xin chào anh em Mì Ai! Một tuần mới lại đến, chúc anh em nhiều hứng khởi và thành công nhé. Trong 2 chương trước tại đây và tại đây mình đã guide anh em cách sử dụng các pretrain model để nhận diện biển số. Cách này có lợi thế là nhanh gọn tuy nhiên trong các trường hợp cụ thể, môi trường cụ thể về ánh sáng, kích thước biển số trong hình… thì lại có thể (mình nói có thể thôi nhé) nhận diện không đúng với ý đồ của các bạn. Do đó, hôm nay mình xin giới thiệu thêm một phương pháp phát hiện biển số bằng OpenCV thuần.

Với cách này các bạn sẽ phải làm nhiều hơn nhưng lại có thể tùy biến thoải mái theo ý mình cho phù hợp.

Rồi, chúng ta bắt đầu!

Phần 1 – Chuẩn bị nguyên vật liệu nấu Mì

Các bạn tạo thư mục MiAI_LP_Detection_3 để lưu các thứ liên quan đến bài này. Sau đó chạy lệnh git để lấy project mình đã viết về:

git clone https://github.com/thangnch/MiAI_LP_Detection_3 .

Done! Đợi chút là “git cờ lôn” về luôn. Bây giờ các bạn tiến hành cài đặt các thư viện cần thiết bằng lệnh:

pip install -r setup.txt

Các thư viện sau sẽ được tiến hành cài đặt tự động:

opencv-python
imutils
numpy

Các bạn đợi một chút để các thư viện cài đặt xong là có thể move sang bước sau.

Phần 2- Tư tưởng thuật toán phát hiện biển số

phát hiện biển số

Tuy là mì ăn liền nhưng chúng ta sẽ cùng nhau đảo qua lý thuyết tý nhé. Bài này cơ bản sẽ làm các bước như sau:

  • Bước 1.Định nghĩa vài thông số cho bài toán như: Kích thước biển số lớn nhất và kích thước biển số nhỏ nhất. Các bạn tùy bài toán mà định nghĩa. Ví dụ bài toán trông xe vào bãi thì camera để gần, kích thước biển số to hơn nhưng nếu bài toán nhận diện xe đi qua cửa bằng camera trên cao chẳng hạn thì kích thước biển số sẽ nhỏ hơn. Chúng ta tùy vào hiện trường thực tế mà tinh chỉnh cho phù hợp.
  • Bước 2. Load ảnh và thực hiện reszie về kích thước mong muốn.
  • Bước 3. Chuyển về đen trắng và thực hiện thuật toán tìm cạnh băng Canny (chi tiết các bạn đọc tại đây)
  • Bước 4. Tìm các contour có trong hình (các bạn cứ hình dùng là các đường bao kín quanh các vùng trắng trong hình). Chi tiết về lý thuyết contour thì đã có OpenCV tài trợ tại đây.
  • Bước 5. Với các contour tìm được ở bước 4, chúng ta lặp qua 1 lượt và chọn contour lớn nhất hội đủ các điều kiện:
    • Có 4 cạnh (sau khi đã approx): vì biển số là đối tượng có 4 cạnh.
    • Có kích thước nằm trong vùng kích thước đã định nghĩa ở bước 1.
    • Contour đó sẽ là biển số chúng ta cần tìm.
  • Bước 6. Tiến hành tìm các điểm góc của contour nói trên và trích hình ảnh biển số ra khỏi hình ảnh cả xe.

Vậy thôi! Mình đã cố gắng diễn giải để sao cho dễ hiểu nhất, nếu vẫn còn lăn tăn, các bạn cứ post lên group Mì AI để trao đổi thêm nhé (Group trao đổi, chia sẻ: https://www.facebook.com/groups/miaigroup ).

Phần 3 – Tiến hành viết code phát hiện biển số

Với tư tưởng thuật toán nói trên, các bạn mở file detect_lp.py ra để xem code nhé. Mình đã comment đầy đủ từng đoạn code, các bạn xem kỹ lý thuyết ở trên là sẽ hiểu ngay code của chương trình.

phát hiện biển số

Phần 4 – Chạy thử chương trình

Các bạn chạy file detect_lp.py, chú ý đổi đường dẫn file ảnh ở dòng cv2.imread cho phù hợp nhé.

Nếu mọi thứ okie, các bạn sẽ thấy màn hình hiển thị như sau:

phát hiện biển số

Well, như vậy sau 3 bài về phát hiện biển số, các bạn đã biết cách phát hiện biển số trong ảnh bằng các pretrain YOLO, WPOD-NET và bằng OpenCV thuần. Trong các bài tiếp theo chúng ta sẽ đi tìm hiểu các cách khác nhau để nhận diện các kí tự trên biển số nhé. Hẹn gặp lại các bạn!

Hãy gia nhập cùng Mì Ai nhé!

Fanpage: http://facebook.com/miaiblog
Group trao đổi, chia sẻ: https://www.facebook.com/groups/miaigroup
Website: https://miai.vn/
Youtube: http://bit.ly/miaiyoutube

Tags:

aidarknetdeep learninglicense plate detectlicense plate recognitionLP detectLP recognizemachine learningnhận diện biển sốobject detectionpythontrain
Author

Chủ tiệm Mì

Follow Me
Other Articles
Previous

[Nhận diện biển số xe] Chương 2 – Phát hiện biển số xe bằng pretrain WPOD-NET

Next

[Nhận diện biển số xe] Chương 4 – Nhận diện biển số xe bằng WPOD và Tesseract OCR

17 Comments
  1. Tien Ngo says:
    November 30, 2019 at 4:45 am

    Hi a, hiện tại e đang làm theo code của a và lúc gõ command line
    pip install -r setup.txt
    thì thấy báo lỗi ” Could not find a version that satisfies the requirement opencv-python==4.1.2.30 (from -r setup.txt (line 1)) (from versions: )
    No matching distribution found for opencv-python==4.1.2.30 (from -r setup.txt (line 1)”, a giúp e sửa lại khúc này với. Cám ơn anh

    Reply
    1. Nguyễn Chiến Thắng says:
      December 1, 2019 at 5:57 am

      Em chụp màn hình xong post lên Group trao đổi, chia sẻ: https://facebook.com/groups/miaigroup cho tiện xem và phản hồi nhé. Thanks em.

      #MìAI
      Fanpage: http://facebook.com/miaiblog
      Group trao đổi, chia sẻ: https://facebook.com/groups/miaigroup
      Website: https://miai.vn
      Youtube: http://bit.ly/miaiyoutube

      Reply
  2. Nhận diện biển số xe bằng WPOD và Tesseract OCR - Mì AI says:
    December 21, 2019 at 9:22 am

    […] Phát hiện bằng OpenCV thuần, xem tại đây. […]

    Reply
  3. Nguyễn Tiến Hoàng says:
    July 22, 2020 at 12:52 am

    Anh ơi cho em hỏi khi em test lại ảnh khác thì bị sai!!!!!

    Reply
    1. Nguyễn Chiến Thắng says:
      July 24, 2020 at 3:23 pm

      Em chụp ảnh post lên Group trao đổi, chia sẻ: https://facebook.com/groups/miaigroup nhé!

      Reply
  4. Nguyễn Ngọc Duệ says:
    January 24, 2021 at 1:15 pm

    Anh Thắng ơi, anh xóa thư mục MiAI_LP_Detection_3 trên github rồi ah? Em tìm lại code để tham khảo mà không còn nữa. Kể cả trên youtube cũng vậy. Hix

    Reply
    1. Nguyễn Chiến Thắng says:
      January 27, 2021 at 3:33 am

      Vẫn nguyên mà em: https://github.com/thangnch/MiAI_LP_Detection_3

      Reply
  5. Nguyễn Ngọc Duệ says:
    January 25, 2021 at 12:25 am

    Anh Thắng ơi, em có đọc 1 paper như sau:
    https://viblo.asia/p/detect-ky-tu-trong-hinh-anh-Az45bnQQ5xY#_2-swt-voi-python-1
    Tuy nhiên có chỗ em chưa hiểu như sau:
    ở mục: 2. SWT với python
    Để sử dụng swt với python ta cần thực hiện 1 số bước như sau:
    clone repo https://github.com/liuliu/ccv
    cài swig: sudo apt-get install swig
    tạo file ccvwrapper.i trong thư mục ccv/lib:
    Em chưa hiểu các bước này làm như thế nào và để làm gì.
    Anh có thể hướng dẫn hoặc giải thích giúp em được không?
    Cảm ơn anh nhé

    Reply
    1. Nguyễn Chiến Thắng says:
      January 27, 2021 at 3:32 am

      Em post lên Group trao đổi, chia sẻ: https://facebook.com/groups/miaigroup trao đổi cho dễ nhé. Trên này khó vì ko up hình được.

      Reply
  6. lương phong says:
    May 13, 2021 at 1:44 pm

    sao em đổi thành hình xe khác nó không lấy bảng số anh ơi hình thì nó lấy logo hình thì nó lấy góc đèn xe

    Reply
    1. Nguyễn Chiến Thắng says:
      May 14, 2021 at 10:51 am

      Với dạng OpenCV này thì phải tuỳ bài toán, tuỳ điều kiện bãi xe em căn chỉnh cho phù hợp. Thay đổi điều kiện thì phỉa căn lại em ạ.

      Reply
  7. Vu says:
    May 30, 2021 at 5:50 pm

    anh ơi sao em cài nó ra lỗi No module named ‘cv2’ vậy ạ

    Reply
    1. Nguyễn Chiến Thắng says:
      June 12, 2021 at 11:33 pm

      Em post lên Group trao đổi, chia sẻ: https://facebook.com/groups/miaigroup cho tiện trao đổi nhé!

      Reply
  8. sơn says:
    July 18, 2021 at 5:16 pm

    anh ơi file detect_lp.py ở đâu đấy ạ

    Reply
    1. Nguyễn Chiến Thắng says:
      August 2, 2021 at 9:49 pm

      Ủa trên Github có mà em!

      Reply
  9. Trần Sơn Dương says:
    May 20, 2025 at 12:19 am

    Anh cho em hỏi tí, này là mình thực hiện lần lượt từ chương 1 xong đến chương 2, chương 3 hay sao vậy ạ. Em thấy chương 3 này chỉ là phát hiện được có biển số xe chứ không phát hiện được biển số như nào giống chương 1 nhỉ anh

    Reply
    1. Nguyễn Chiến Thắng says:
      July 1, 2025 at 10:12 am

      Em post lên Group trao đổi, chia sẻ: https://facebook.com/groups/miaigroup cho tiện trao đổi nhé!

      Reply
Show Comments

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Recent Posts

  • Tìm hiểu và cài đặt OpenClaw – trợ lý ảo 24/7 thông minh đa chức năng – Mì Ai
  • Dùng thử Pika – robot học Tiếng Anh cho trẻ cực đỉnh – Mì AI
  • TopView.AI 4.0 – nền tảng tạo AI video cộng tác bá đạo – Mì AI
  • Storm MCP – giải pháp nhanh gọn nhẹ để có MCP Server trong 5 phút – Mì AI
  • VoxCPM thử voice cloning với checkpoint finetune Tiếng Việt – Mì AI

Recent Comments

  1. Chủ tiệm Mì on Thử xây dựng hệ thống Agentic AI với LangGraph – Mì AI
  2. Nguyễn Chiến Thắng on [Nhận diện biển số xe] Chương 3 – Phát hiện biển số bằng OpenCV thuần
  3. Trần Sơn Dương on [Nhận diện biển số xe] Chương 3 – Phát hiện biển số bằng OpenCV thuần
  4. Salomon on [CV] Thử làm model cảnh báo ngủ gật cho tài xế oto bằng Dlib và Resnet
  5. khang on Xây dựng hệ thống nhận diện thủ ngữ – ngôn ngữ ký hiệu tay – để giao tiếp với người khuyết tật

Categories

  • Basic
  • Computer Vision
  • Data Science – Data Analysis
  • Generative AI
  • MÌ ÚP
  • Natural Language Processing
  • RNN-LSTM-GRU
  • Share Data

Là người đi trước, hãy biết đưa tay lại phía sau.

Nguyễn Chiến Thắng
Cảm ơn các bạn đã ủng hộ Mì AI!