Báo cáo đồ án: Ứng dụng nhận diện biển báo giao thông sử dụng Python

Báo cáo đồ án Python: Xây dựng ứng dụng nhận diện biển báo giao thông. Tìm hiểu chi tiết về thuật toán, mã nguồn và kết quả đạt được trong dự án.

Trường đại học

Trường Đại Học Sài Gòn

Chuyên ngành

Ngôn Ngữ Lập Trình Python

Người đăng

Ẩn danh

Thể loại

Báo cáo đồ án cuối kỳ

2023

44
14
0

Phí lưu trữ

30 Point

Mục lục chi tiết

LỜI MỞ ĐẦU

1. CHƯƠNG 1: CƠ SỞ LÝ THUYẾT

1.1. Giới thiệu về ngôn ngữ Python

1.1.1. Ngôn Ngữ Python là gì?

1.2. Lợi ích của Python

1.3. Ứng dụng của Python

1.4. Các thư viện của Python được sử dụng

1.5. From datetime import datetime

1.6. Thư viện Google Auth trong Kivy (kivyauth

1.7. ScreenManager, Screen, MDScreen

1.8. MDList, ThreeLineAvatarIconListItem,OneLineAvatarIconListItem, IconLeftWidget

1.9. Sử dụng SQL để quản lý database

1.10. Convolutional Neural Network (CNN)

2. CHƯƠNG 2: XÂY DỰNG CHƯƠNG TRÌNH

2.1. Demo chương trình

2.2. Demo chương trình (Cách thức thao tác từng chức năng + hình ảnh demo)

3. CHƯƠNG 3: CÀI ĐẶT, DEMO CHƯƠNG TRÌNH

3.1. Cài đặt chương trình

3.2. Demo chương trình

KẾT LUẬN

1. ĐÁNH GIÁ NHỮNG NỘI DUNG ĐÃ THỰC HIỆN

2. ĐÁNH GIÁ NHỮNG NỘI DUNG CHƯA THỰC HIỆN

3. ĐỀ XUẤT HƯỚNG PHÁT TRIỂN

Tóm tắt

I. Nhận Diện Biển Báo Giao Thông Tổng Quan và Ứng Dụng

Bài toán nhận diện biển báo giao thông ngày càng trở nên quan trọng trong bối cảnh phát triển của xe tự lái và hệ thống hỗ trợ lái xe thông minh. Việc phân loại biển báo giao thông chính xác và nhanh chóng giúp tăng cường an toàn giao thông, giảm thiểu tai nạn và nâng cao hiệu quả di chuyển. Ứng dụng artificial intelligencecomputer vision đã mở ra nhiều hướng tiếp cận mới cho bài toán này, đặc biệt là sự phát triển của các thuật toán machine learningdeep learning. Các mô hình như YOLOSSD đã chứng minh khả năng object detection biển báo giao thông vượt trội, đáp ứng yêu cầu về tốc độ và độ chính xác trong môi trường thực tế. Tuy nhiên, vẫn còn nhiều thách thức cần giải quyết, bao gồm khả năng xử lý trong điều kiện ánh sáng yếu, thời tiết xấu và sự đa dạng về kiểu dáng, kích thước của biển báo giao thông Việt Nambiển báo giao thông quốc tế. Cần có những nghiên cứu sâu hơn để nâng cao độ chính xác nhận diện biển báo giao thôngtốc độ nhận diện biển báo giao thông, đồng thời phát triển các phương pháp tăng cường tính robustness của hệ thống. Theo báo cáo đồ án cuối kỳ, nhóm sinh viên đã sử dụng Python để xây dựng ứng dụng, cho thấy tiềm năng ứng dụng ngôn ngữ này trong lĩnh vực nhận diện biển báo giao thông. "(BÌA NGOÀI) TRƯỜNG ĐẠI HỌC SÀI GÒN KHOA CÔNG NGHỆ THÔNG TIN -------------------- BÁO CÁO ĐỒ ÁN CUỐI KỲ HỌC PHẦN: NGÔN NGỮ LẬP TRÌNH PYTHON ĐỀ TÀI: XÂY DỰNG ỨNG DỤNG NHẬN DIỆN BIỂN BÁO GIAO THÔNG..."

1.1. Giới Thiệu Các Phương Pháp Tiếp Cận Nhận Diện Biển Báo

Có nhiều phương pháp tiếp cận khác nhau để giải quyết bài toán nhận diện biển báo giao thông. Các phương pháp truyền thống thường dựa trên việc trích xuất đặc trưng thủ công, ví dụ như đặc trưng hình dạng, màu sắc và kích thước. Sau đó, các thuật toán machine learning như SVM (Support Vector Machine) hoặc AdaBoost được sử dụng để phân loại biển báo giao thông. Tuy nhiên, các phương pháp này thường gặp khó khăn trong việc xử lý sự biến đổi lớn về ánh sáng, góc nhìn và độ mờ của ảnh. Gần đây, các phương pháp dựa trên deep learning, đặc biệt là Convolutional Neural Networks (CNN), đã đạt được những kết quả vượt trội. Các mô hình CNN có khả năng tự động học các đặc trưng phức tạp từ dữ liệu ảnh, giúp tăng cường đáng kể độ chính xác và tính robustness của hệ thống. Các kiến trúc như YOLO, SSD và Faster R-CNN thường được sử dụng để object detection biển báo giao thông trong thời gian thực.

1.2. Ứng Dụng Nhận Diện Biển Báo Trong Giao Thông Thông Minh

Ứng dụng nhận diện biển báo giao thông không chỉ giới hạn trong lĩnh vực xe tự lái mà còn có nhiều tiềm năng trong các hệ thống giao thông thông minh khác. Ví dụ, hệ thống có thể được sử dụng để cảnh báo người lái xe về các biển báo quan trọng như giới hạn tốc độ, biển báo nguy hiểm hoặc biển báo cấm. Hệ thống hỗ trợ lái xe có thể sử dụng thông tin này để điều chỉnh tốc độ hoặc đưa ra cảnh báo kịp thời, giúp ngăn ngừa tai nạn. Ngoài ra, dữ liệu nhận diện biển báo giao thông có thể được sử dụng để xây dựng bản đồ số chi tiết và cập nhật, hỗ trợ công tác quản lý và điều hành giao thông. Việc thu thập và phân tích dữ liệu về vị trí, tình trạng của các biển báo cũng giúp cơ quan chức năng phát hiện và khắc phục các biển báo bị hỏng hoặc mất, đảm bảo an toàn cho người tham gia giao thông.

II. Xây Dựng Mô Hình Nhận Diện Biển Báo Với Python Hướng Dẫn

Việc xây dựng mô hình nhận diện biển báo giao thông bằng Python đòi hỏi kiến thức về computer vision, machine learningdeep learning. Các thư viện phổ biến như OpenCV, TensorFlowKeras cung cấp nhiều công cụ và hàm để hỗ trợ quá trình này. Đầu tiên, cần chuẩn bị một dataset biển báo giao thông đủ lớn và đa dạng. Dataset này cần bao gồm các hình ảnh của các loại biển báo khác nhau, với các điều kiện ánh sáng, góc nhìn và độ mờ khác nhau. Sau đó, cần tiền xử lý dữ liệu để chuẩn hóa kích thước ảnh, tăng cường độ tương phản và loại bỏ nhiễu. Tiếp theo, cần xây dựng kiến trúc mô hình CNN phù hợp, lựa chọn hàm mất mát và thuật toán tối ưu hóa. Cuối cùng, cần huấn luyện mô hình trên dataset đã chuẩn bị và đánh giá hiệu suất trên tập kiểm tra. Các Semantic LSI keywords như YOLO, SSD, TensorFlow biển báo giao thông, Keras biển báo giao thông sẽ giúp cải thiện khả năng tìm kiếm và xếp hạng của bài viết trên các công cụ tìm kiếm.

2.1. Chuẩn Bị Dữ Liệu Huấn Luyện Dataset Biển Báo Giao Thông

Việc chuẩn bị dataset biển báo giao thông là một bước quan trọng trong quá trình xây dựng mô hình nhận diện biển báo giao thông. Dataset cần đảm bảo tính đa dạng về các loại biển báo, điều kiện ánh sáng, góc nhìn và độ mờ. Có thể sử dụng các dataset công khai như German Traffic Sign Recognition Benchmark (GTSDB) hoặc xây dựng dataset riêng bằng cách thu thập hình ảnh từ các nguồn khác nhau. Một số nguồn có thể kể đến như: camera hành trình, video giao thông hoặc chụp ảnh trực tiếp trên đường. Cần chú ý đến việc gán nhãn chính xác cho từng hình ảnh, đảm bảo rằng mỗi hình ảnh được gắn với loại biển báo tương ứng. Việc sử dụng các công cụ gán nhãn chuyên dụng như LabelImg hoặc VGG Image Annotator giúp tăng cường hiệu quả và độ chính xác của quá trình gán nhãn. Ngoài ra, cần thực hiện các kỹ thuật tăng cường dữ liệu (data augmentation) như xoay ảnh, lật ảnh, thay đổi độ sáng và thêm nhiễu để tăng cường tính robustness của mô hình.

2.2. Xây Dựng và Huấn Luyện Mô Hình CNN Với TensorFlow và Keras

Sử dụng TensorFlowKeras để xây dựng và huấn luyện mô hình CNN để nhận diện biển báo giao thông. Kiến trúc mô hình có thể bao gồm các lớp convolution, pooling, dropout và fully connected. Lựa chọn hàm kích hoạt phù hợp cho từng lớp, ví dụ ReLU cho các lớp convolution và softmax cho lớp đầu ra. Sử dụng hàm mất mát categorical cross-entropy để đánh giá hiệu suất của mô hình và thuật toán Adam để tối ưu hóa các tham số. Chia dữ liệu thành tập huấn luyện và tập kiểm tra để đánh giá khả năng generalization của mô hình. Sử dụng các kỹ thuật regularization như dropout hoặc weight decay để ngăn ngừa overfitting. Theo dõi quá trình huấn luyện để phát hiện các vấn đề như underfitting hoặc overfitting và điều chỉnh các siêu tham số (hyperparameters) để cải thiện hiệu suất. Sau khi huấn luyện xong, đánh giá độ chính xác nhận diện biển báo giao thông trên tập kiểm tra và tinh chỉnh mô hình nếu cần thiết.

2.3 Tối Ưu Hiệu Năng và Đánh Giá Mô Hình Nhận Diện

Việc tối ưu hiệu năng và đánh giá mô hình nhận diện biển báo giao thông là bước quan trọng để đảm bảo rằng mô hình hoạt động hiệu quả trong môi trường thực tế. Sử dụng các kỹ thuật như pruning (cắt tỉa) và quantization (lượng tử hóa) để giảm kích thước mô hình và tăng tốc độ xử lý. Tối ưu hóa mã Python để giảm thiểu thời gian thực thi và sử dụng bộ nhớ hiệu quả. Sử dụng các công cụ profiling để xác định các bottleneck về hiệu năng và tối ưu hóa các phần quan trọng của mã. Đánh giá mô hình trên các bộ dữ liệu khác nhau để đảm bảo tính robustness và khả năng generalization. Sử dụng các metrics như độ chính xác, độ recall và F1-score để đánh giá hiệu suất của mô hình. Phân tích các trường hợp lỗi (false positives và false negatives) để xác định các điểm yếu của mô hình và cải thiện kiến trúc hoặc dữ liệu huấn luyện.

III. Ứng Dụng Thực Tế Nhận Diện Biển Báo Giao Thông Thời Gian Thực

Việc triển khai mô hình nhận diện biển báo giao thông trong thời gian thực đòi hỏi sự kết hợp giữa phần mềm và phần cứng. Sử dụng các thư viện như OpenCV để xử lý hình ảnh và video từ camera. Triển khai mô hình deep learning trên các thiết bị nhúng như Raspberry Pi hoặc NVIDIA Jetson để đạt được tốc độ nhận diện biển báo giao thông đủ nhanh. Tích hợp mô hình vào các ứng dụng nhận diện biển báo giao thông như hệ thống hỗ trợ lái xe (ADAS) hoặc xe tự lái. Đảm bảo rằng hệ thống có khả năng xử lý trong các điều kiện ánh sáng và thời tiết khác nhau, cũng như đối phó với các biển báo bị mờ hoặc bị che khuất. Quan trọng hơn là phát triển các giao diện người dùng thân thiện và dễ sử dụng, cho phép người lái xe dễ dàng theo dõi và hiểu thông tin từ hệ thống.

3.1. Tích Hợp OpenCV và Mô Hình Deep Learning Cho Nhận Diện Thời Gian Thực

OpenCV đóng vai trò quan trọng trong việc xử lý hình ảnh và video đầu vào từ camera, trong khi mô hình deep learning chịu trách nhiệm phân loại biển báo giao thông. Để tích hợp hai thành phần này, cần thực hiện các bước sau: Đọc hình ảnh hoặc video từ camera bằng OpenCV. Tiền xử lý hình ảnh để chuẩn hóa kích thước và định dạng. Sử dụng mô hình deep learning để object detection biển báo giao thông trong hình ảnh. Vẽ bounding boxes xung quanh các biển báo được phát hiện và hiển thị thông tin về loại biển báo. Tối ưu hóa quá trình xử lý để đạt được tốc độ nhận diện biển báo giao thông đủ nhanh cho ứng dụng thời gian thực. Sử dụng các kỹ thuật như multi-threading hoặc GPU acceleration để tăng tốc độ xử lý.

3.2. Triển Khai Trên Thiết Bị Nhúng Raspberry Pi và NVIDIA Jetson

Việc triển khai mô hình nhận diện biển báo giao thông trên các thiết bị nhúng như Raspberry Pi hoặc NVIDIA Jetson đòi hỏi sự cân nhắc kỹ lưỡng về hiệu năng và tài nguyên. Raspberry Pi là một lựa chọn phổ biến cho các ứng dụng có chi phí thấp và yêu cầu hiệu năng vừa phải, trong khi NVIDIA Jetson cung cấp hiệu năng cao hơn cho các ứng dụng phức tạp hơn. Cần tối ưu hóa mô hình deep learning để giảm kích thước và tăng tốc độ xử lý. Sử dụng các công cụ như TensorFlow Lite hoặc ONNX để chuyển đổi mô hình sang định dạng tối ưu cho thiết bị nhúng. Lựa chọn ngôn ngữ lập trình và thư viện phù hợp để tối ưu hóa hiệu năng, ví dụ Python với OpenCVTensorFlow Lite. Cần thực hiện các thử nghiệm và đánh giá để đảm bảo rằng hệ thống hoạt động ổn định và đáp ứng yêu cầu về tốc độ nhận diện biển báo giao thông trong môi trường thực tế.

IV. Kết Luận và Hướng Phát Triển Của Ứng Dụng Nhận Diện

Ứng dụng nhận diện biển báo giao thông bằng Python có nhiều tiềm năng phát triển trong tương lai. Các hướng nghiên cứu tiềm năng bao gồm: Nâng cao độ chính xác nhận diện biển báo giao thông trong các điều kiện khó khăn. Phát triển các thuật toán nhận diện biển báo giao thông có khả năng xử lý với các biển báo bị hỏng hoặc bị che khuất. Tích hợp thông tin từ nhiều nguồn khác nhau (ví dụ, GPS, cảm biến) để tăng cường độ tin cậy của hệ thống. Phát triển các ứng dụng nhận diện biển báo giao thông cho các thiết bị di động và các hệ thống giao thông công cộng. Nghiên cứu về mô hình nhận diện biển báo giao thông có khả năng học và thích nghi với các loại biển báo mới. Ngoài ra nhóm nghiên cứu cũng đưa ra các đề xuất hướng phát triển để cải tiến ứng dụng. " - Hoàn thiện chương trình. + Liên kết big data để ứng dụng xử lý chính xác hơn. + Fix lại giao diện để trông chuyên nghiệp hơn..."

4.1. Các Thách Thức và Cơ Hội Trong Lĩnh Vực Nhận Diện Biển Báo

Lĩnh vực nhận diện biển báo giao thông đang đối mặt với nhiều thách thức và cơ hội. Một trong những thách thức lớn nhất là sự đa dạng về kiểu dáng, kích thước và điều kiện môi trường của các biển báo. Các biển báo có thể bị hỏng, bị che khuất hoặc bị ảnh hưởng bởi ánh sáng và thời tiết. Điều này đòi hỏi các thuật toán nhận diện biển báo giao thông phải có tính robustness cao và khả năng thích nghi với các điều kiện khác nhau. Tuy nhiên, cũng có nhiều cơ hội để phát triển các ứng dụng sáng tạo trong lĩnh vực này. Ví dụ, các hệ thống nhận diện biển báo giao thông có thể được sử dụng để cảnh báo người lái xe về các nguy hiểm tiềm ẩn, hỗ trợ việc điều khiển xe tự lái hoặc cung cấp thông tin giao thông cho các ứng dụng di động.

4.2. Đóng Góp Của Python Và Deep Learning Vào Tương Lai Giao Thông

Pythondeep learning đóng vai trò quan trọng trong việc định hình tương lai của giao thông. Python cung cấp một môi trường phát triển linh hoạt và dễ sử dụng cho việc xây dựng các ứng dụng nhận diện biển báo giao thông và các hệ thống giao thông thông minh khác. Deep learning cung cấp các công cụ mạnh mẽ để học và phân tích dữ liệu giao thông phức tạp, giúp tăng cường an toàn, hiệu quả và bền vững của hệ thống giao thông. Việc kết hợp Pythondeep learning mở ra nhiều cơ hội để phát triển các giải pháp sáng tạo cho các vấn đề giao thông hiện nay, từ việc giảm thiểu tai nạn đến việc tối ưu hóa lưu lượng giao thông và giảm thiểu ô nhiễm môi trường.

11/09/2025

Trích đoạn nội dung tài liệu

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.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ