You are on page 1of 9

-Các câu lệnh khởi tạo giao diện gồm:+ 2 nút , 1 hiển thị và 2 ảnh.

Tạo các màu sắc,chiều cao,và thuộc


tính của nó

- dòng 178: Là vòng lặp vô tận để hiển thị và chạy giao diện
-Đây là hàm sẽ được thực thi khi bấm vào nút select:

- đầu tiên ở dòng 131 ta dùng thư viện tkinter để mở file và lấy đường dẫn -> dòng 133 sẽ đọc ảnh qua
đường dẫn bằng thư viện cv2

- Tiếp theo lấy kích thước của ảnh và chuyển nó về xấp xỉ kích thước của khung hiển thị ảnh trong giao
diện( vì ảnh có nhiều kích thước còn giao diện là cố định)
-Hàm này thực thi khi nhấn nút start (ở dòng 147 khi khởi tạo button đã cài đặt)

-Đầu tiên nó sẽ thử đọc ảnh từ chọn file: bằng câu lệnh try: -> nếu không đọc được nó sẽ thực thi câu
lệnh trong except: để thông báo là chọn file

-Nếu đọc được ảnh thì sẽ chuyển ảnh về ảnh xám sau đó dòng 38 filter là để lọc ảnh cho mịn hơn lí do :
https://aicurious.io/posts/2018-09-29-loc-anh-image-filtering/
đây là ảnh gốc và ảnh sau khi chuyển

-Tiếp theo dòng 39 là để phát hiện các cạnh trong ảnh -> cüng áp dụng ma trận giống như lọc ảnh:

-Tiếp theo sau khi có được các cạnh thì ta áp dụng cách là tìm các contour

-Sau đó ở dòng 42: ta sẽ sắp xếp lại 10 contours lớn nhất và bỏ đi các contour nhỏ sẽ ra các contour
trắng hẳn lên như sau:
-Sau đó ta sẽ tìm vùng có 4 cạnh kín trong các contour đó và nếu có thì xác định đó là biển số xe
-Sau khi có biển số xe ta tách riêng biển số ra để nhận diện các chữ số và chuyển đổi tách nó ra khỏi
nền bằng threshold(dòng 72):

-Và sau khi có ảnh này ta lại lọc qua ma trận và tìm các chữ số và lấy vị trí nó bằng findcontour:

-Lúc này những mảng trắng hẳn là các chữ số


Và ta sẽ sắp xếp thứ tự các vị trí theo chiều x của các contours để duyệt số và nhận diện nó. Ta sẽ phát
hiện các chữ số bằng cách tìm những phần

 : chiều cao > chiều rộng


 Chiều cao >= 40-60% của biển số (phải chỉnh tùy ảnh)
Nếu thỏa mãn yêu cầu thì đó là số và ta đánh dấu vị trí số đó lại và cắt ra:
-Tiếp theo sau khi đã có các chữ số ta sẽ nhận diện nó bằng model SVM đã được training qua
các chữ số và lưu kết quả chữ số vào biến result

2 cậu lệnh này là để phát hiện chữ số đã đọc là bên trên hay bên dưới vì có xe có 2 hàng biển
số ( phân biệt theo tọa độ x,y)
-Cuối cüng biển chữ số được lưu quá biến plate_info và hiển thị lên giao diện

You might also like