CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 1. Giới thiệu về ngôn ngữ Python 1.1 Ngôn Ngữ Python là gì? Python là một ngôn ngữ lập trình bậc cao, được tạo ra bởi Guido van Rossum vào những năm 1980 và phát triển tiếp theo trong thập niên 1990. Python là một ngôn ngữ lập trình đơn giản, dễ học và dễ sử dụng, có thể được sử dụng để xây dựng các ứng dụng máy tính, trang web, các hệ thống đám mây, trí tuệ nhân tạo, máy học và các ứng dụng phân tích dữ liệu. Python cũng là một ngôn ngữ lập trình đa nền tảng, có thể chạy trên các hệ điều hành khác nhau như Windows, Linux và MacOS.
Python có một cộng đồng lớn và đa dạng, với hàng ngàn thư viện và framework hỗ trợ cho việc phát triển ứng dụng.2 Lợi ích của Python + Dễ học và sử dụng: Python có cú pháp đơn giản và dễ hiểu, giúp người mới bắt đầu học lập trình dễ dàng tiếp cận và làm quen với các khái niệm lập trình cơ bản. + Đa năng: Python có thể được sử dụng để phát triển các loại ứng dụng khác nhau như ứng dụng máy tính, web, trí tuệ nhân tạo, máy học, phân tích dữ liệu, đám mây, hệ thống nhúng và nhiều hơn nữa. + Cộng đồng lớn và đa dạng: Python có một cộng đồng phát triển lớn và đa dạng, với hàng ngàn thư viện và framework hỗ trợ cho việc hát triển ứng dụng. + Tính tương thích cao: Python là một ngôn ngữ đa nền tảng, có thể chạy trên nhiều hệ điều hành khác nhau như Windows, Linux và MacOS.
+ Hiệu suất cao: Python có thể được tối ưu hóa để đạt được hiệu suất cao, đặc biệt là khi sử dụng các thư viện và framework được viết bằng C/C++. + Dễ dàng mở rộng: Python có tính mở rộng cao, cho 6 phép người dùng tạo ra các module và thư viện riêng để mở rộng chức năng của Python. + Tương tác tốt với các ngôn ngữ khác: Python có thể tương tác tốt với các ngôn ngữ khác như C/C++, Java, và .NET, giúp cho việc tích hợp các phần mềm và dịch vụ khác nhau trở nên dễ dàng hơn.3 Ứng dụng của Python Dưới đây là một số ví dụ về các ứng dụng của Python: + Phát triển ứng dụng web: Python có thể được sử dụng để phát triển các ứng dụng web, với các framework như Django, Flask và Pyramid. + Trí tuệ nhân tạo và máy học : Python là một trong những ngôn ngữ phổ biến nhất trong lĩnh vực trí tuệ nhân tạo và máy học, với các thư viện như TensorFlow, Keras và PyTorch.
+ Phân tích dữ liệu: Python có các thư viện như Pandas và NumPy để xử lý và phân tích dữ liệu, và Matplotlib và Seaborn để tạo đồ thị và biểu đồ. + Game development: Python có thể được sử dụng để phát triển game với các thư viện như Pygame và PyOpenGL. + Đám mây: Python có thể được sử dụng để quản lý và triển khai các hệ thống đám mây với các framework như OpenStack và Ansible. + Hệ thống nhúng: Python có thể được sử dụng để phát triển các hệ thống nhúng, với các framework như MicroPython và CircuitPython.
+ Ứng dụng máy tính: Python có thể được sử dụng để phát triển các ứng dụng máy tính trên nhiều nền tảng khác nhau, với các thư viện như PyQt và wxPython. Các thư viện của Python được sử dụng Các thư viện được sử dụng trong đồ án: Import os Import cv2 Import numpy Datetime from datetime Thư viện Google Auth trong Kivy 7 Import re Kivy và KivyMD 2.1 Import os Thư viện os cung cấp các phương thức để tương tác với hệ thống tệp và thư mục trong Python. Bạn có thể sử dụng nó để thực hiện các hoạt động như tạo, xóa, di chuyển hoặc đổi tên tệp. Trong code của nhóm em thì có sử dụng os: + Để tạo đường dẫn đến thư mục chứa biển báo giao thông trong biến image_dir.
+ Mở file ảnh biển báo giao thông từ thư mục tạo đường dẫn đến file ảnh có thể là một cách thực tiễn khi cần tương tác với nhiều hệ điều hành khác nhau. Tuy nhiên việc này không được thực hiện trực tiếp. + Kiểm tra sự tồn tại của thư mục khi truy cập từng biển báo để tránh lỗi không tồn tại hoặc đã bị xóa đi.2 Import cv2 Thư viện OpenCV(cv2) là một thư viện mã nguồn mở chuyên dụng cho xử lý hình ảnh và thị giác máy tính. Nó cung cấp các công cụ để đọc, ghi, xử lý và phân tích hình ảnh, cũng như các chức năng nhận dạng đối tượng, phát hiện khuôn mặt, và nhiều hơn nữa.
Cung cấp các chức năng để thực hiện các bước sau: + Đọc và xử lý hình ảnh trong đường dẫn img_path. + Chuyển đổi định dạng màu sắc hình ảnh từ RGBA sang RGB. + Phân loại hình ảnh, hình ảnh được truyền vào 1 mô hình đã được huấn luyện để phân loại.3 Import numpy Thư viện numpy là một thư viện Python mạnh mẽ cho tính toán khoa học và toán học. Nó cung cấp một đối tượng mảng nhiều chiều (ndarray), các hàm để làm việc với mảng này, và một loạt các công cụ để làm việc với mảng số.
Cung cấp các chức năng để thực hiện các bước sau: + Chuyển đổi hình ảnh: NumPy cung cấp các phương pháp để chuyển đổi hình ảnh từ một loạt các định dạng khác nhau thành các mảng NumPy, thuận tiện cho việc xử lý tiếp theo. 8 + Thao tác ma trận: NumPy cung cấp một loạt các hàm và phương thức để thực hiện các phép toán ma trận, như cộng, trừ, nhân, chia, transpoze, và nhiều phép toán khác. Điều này hữu ích trong việc xử lý dữ liệu hình ảnh, ví dụ như khi áp dụng các bộ lọc hình ảnh hoặc biến đổi hình ảnh. + Xử lý dữ liệu số: NumPy cung cấp các công cụ mạnh mẽ để thực hiện các phép toán số học và tính toán khoa học trên dữ liệu số.Chúng tôi có thể sử dụng NumPy để xử lý các dữ liệu kết quả từ việc nhận diện biển báo giao thông hoặc xử lý hình ảnh.4 From datetime import datetime Thư viện datetime trong Python cung cấp các lớp để làm việc với ngày tháng và thời gian.
Bằng cách này,chúng tôi có thể sử dụng datetime.now() để lấy thời gian hiện tại để lưu vào file khi quét các biển báo.5 Thư viện Google Auth trong Kivy (kivyauth.google_auth) Cung cấp các công cụ để tích hợp chức năng đăng nhập bằng tài khoản Google vào ứng dụng. Khi sử dụng thư viện này có thể tạo ra một quy trình đăng nhập đơn giản và an toàn cho người dùng của mình, cho phép họ đăng nhập vào ứng dụng bằng tài khoản Google của họ. Cung cấp các chức năng để thực hiện các bước sau: + Xác thực tài khoản Google: Thư viện cho phép ứng dụng của bạn gửi yêu cầu xác thực đến Google, và Google sẽ trả về một mã xác thực sau khi người dùng đăng nhập thành công. + Lấy thông tin người dùng: Sau khi xác thực thành công, thư viện giúp bạn lấy thông tin về người dùng từ tài khoản Google của họ, như tên, hình ảnh đại diện, địa chỉ email, vv.
Điều này giúp bạn tạo ra trải nghiệm cá nhân hóa cho người dùng của mình. + Quản lý phiên làm việc : Thư viện cung cấp cơ chế để quản lý phiên làm việc của người dùng sau khi họ đăng nhập. Điều này bao gồm việc lưu trữ thông tin phiên làm việc và xác thực phiên làm việc để đảm bảo tính bảo mật của ứng dụng. Tóm lại, việc sử dụng thư viện Google Auth trong Kivy giúp chúng ta tích hợp tính năng đăng nhập bằng tài khoản Google vào ứng dụng của mình một cách dễ dàng và an toàn, cung cấp một trải nghiệm đăng 9 nhập thuận tiện cho người dùng.6 Import re Thư viện re trong Python là một công cụ mạnh mẽ để làm việc với các biểu thức chính quy (regular expressions).
Biểu thức chính quy là một chuỗi ký tự mô tả một tập hợp các chuỗi. Khi bạn import re, bạn có thể sử dụng các phương thức của nó để tìm kiếm, thay thế và phân tích các chuỗi dựa trên mẫu đã định sẵn. Cung cấp các chức năng để thực hiện các bước sau: + Tìm kiếm và so khớp chuỗi: Bạn có thể sử dụng re.search() hoặc re.match() để tìm kiếm một mẫu trong một chuỗi và trả về vị trí xuất hiện của mẫu nếu có. + Thay thế chuỗi: re.sub() cho phép bạn thay thế các phần của chuỗi phù hợp với mẫu bằng một chuỗi khác.
+ Phân tích chuỗi: Bạn có thể sử dụng re.split() để phân tách chuỗi thành các phần dựa trên một mẫu. Các phép toán khác với biểu thức chính quy: re.fullmatch() và các phương thức khác cho phép bạn thực hiện các hoạt động khác nhau với các biểu thức chính quy.2 Front-end Sử dụng các class thuộc thư viện Kivy và KivyMD. Tổng quan các điều chỉnh thuộc tính khá tương đồng giữa hai module. Có thể sử dụng trực tiếp trong file kivy mà không cần import từ trước.1 MDApp “from kivymd.app import MDApp”: Import lớp MDApp từ module kivymd.
Lớp này là lớp cơ sở cho ứng dụng KivyMD của bạn. Bạn sẽ tạo một lớp con kế thừa từ MDApp để xây dựng ứng dụng của mình.2 Window Window trong Kivy là một đối tượng toàn cục cung cấp các thuộc tính và phương thức để điều khiển cửa sổ của ứng dụng. Dưới đây là một số tính năng quan trọng của Window: 10 + Kích thước cửa sổ: Bạn có thể đặt kích thước cửa sổ của ứng dụng bằng cách sử dụng các thuộc tính như Window.width và Window. + Tiêu đề cửa sổ: Bạn có thể đặt tiêu đề của cửa sổ bằng cách sử dụng thuộc tính Window.
+ Các sự kiện của cửa sổ: Window cung cấp các sự kiện như on_close, on_resize, on_request_close, cho phép bạn xử lý các sự kiện liên quan đến cửa sổ của ứng dụng, chẳng hạn như khi người dùng đóng cửa sổ. + Thuộc tính hiển thị: Bạn có thể điều chỉnh thuộc tính hiển thị của cửa sổ như độ phân giải, tỷ lệ khung hình và có hiển thị toàn màn hình hay không.3 ScreenManager, Screen, MDScreen ScreenManager: + ScreenManager là một phần quan trọng của Kivy, cho phép bạn quản lý và chuyển đổi giữa các màn hình trong ứng dụng. + Đầu tiên, tạo một đối tượng ScreenManager bằng cách sử dụng ScreenManager(). + Thêm các màn hình vào ScreenManager bằng cách sử dụng phương thức add_widget(screen), với screen là một đối tượng Screen mà bạn muốn thêm.
+ Để hiển thị một màn hình cụ thể, sử dụng thuộc tính current của ScreenManager để thiết lập tên của màn hình muốn hiển thị. Ví dụ: screen_manager. + Sử dụng các phương thức như switch_to() để chuyển đổi giữa các màn hình.