1. Trang chủ
  2. » Thể loại khác

ĐỒ ÁN CHUYÊN NGÀNH 2 ĐỀ TÀI: XÂY DỰNG HỆ THỐNG BÃI GIỮ XE THÔNG MINH. Giảng viên hướng dẫn : PGS.TS. HUỲNH CÔNG PHÁP

39 15 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 39
Dung lượng 2,47 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Cấu trúc

  • Chương 1 Tổng quan

    • 1.1 Đối tượng và phạm vi nghiên cứu

      • 1.1.1 Đối tượng nghiên cứu

      • 1.1.2 Phạm vi nghiên cứu

    • 1.2 Cơ sở lý thuyết

      • 1.2.1 Bài toán nhận diện khuôn mặt

        • 1.2.1.1 Giới thiệu về bài toán nhận diện khuôn mặt

        • 1.2.1.2 Nhận dạng dựa trên các đặc trưng khuôn mặt

        • 1.2.1.3 Nhận dạng dựa trên xét toàn bộ khuôn mặt

      • 1.2.2 Bài toán nhận diện biển số

        • 1.2.2.1 Giới thiệu

        • 1.2.2.2 Xử lý bài toán nhận diện biển số

      • 1.2.3 Ngôn ngữ lập trình Python

        • 1.2.3.1 Giới thiệu Python

        • 1.2.3.2 Đặc trưng của ngôn ngữ lập trình Python

      • 1.2.4 Thư viện OpenCV

      • 1.2.5 Thư viện pyQt5

      • 1.2.6 Flask Templates Python

      • 1.2.7 Giới thiệu một số phần mềm lập trình

        • 1.2.7.1 Phần mềm Visual Studio Code

        • 1.2.7.2 Phần mềm SQLite

    • 1.3 Kết luận

  • Chương 2 Phân tích và thiết kế hệ thống

    • 2.1 Khách hàng

    • 2.2 Quản lý

    • 2.3 Kết luận

  • Chương 3 Triển khai xây dựng

    • 3.1 Xây dựng môi trường làm việc

      • 3.1.1 Cài đặt OpenCV và các công cụ phát triển

        • 3.1.1.1 Cài đặt công cụ Visual Studio Code:

        • 3.1.1.2 Tiến hành cài đặt Python và Anaconda

      • 3. Cài đặt thư viện OpenCV

      • 3.1.2 Cài đặt SQLite

      • 3.1.3 Cài đặt Flask

      • 3.1.4 Cài đặt PyQt5 và công cụ QtDesigner

    • 3.2 Xây dựng ứng dụng

      • 3.2.1 Mô hình tổng quan

      • 3.2.2 Xây dựng chi tiết ứng dụng

        • 3.2.2.1 Xây dựng website để quản lí dữ liệu và train dữ liệu:

        • 3.2.2.2 Xây dựng Desktop App nhận diện khuôn mặt và nhận diện biển số

    • 3.3 Kết luận

  • Chương 4 Kết luận và định hướng phát triển

    • 4.1 Kết luận

    • 4.2 Định hướng phát triển

Nội dung

Mục tiêu của đề tài Hệ thống sẽ bao gồm ứng dụng cho phép người dùng có thể kiểm soát vào racủa các xe dựa trên thuật toán nhận diện khuôn mặt và nhận diện biển số xe, để cóthể thực hiện

Tổng quan

Đối tượng và phạm vi nghiên cứu

1.1.1 Đối tượng nghiên cứu Đối tượng nghiên cứu gồm:

 Nghiên cứu và xây dựng thuật toán nhận diện khuôn mặt và thuật toán nhận diện biển số xe

 Ngôn ngữ lập trình Python

 Thư viện OpenCV, framework Flask

 Phần mềm Visual Studio Code, pyQt5, MySQL Server

 Ứng dụng quản lý hệ thống nhận diện

Phạm vi nghiên cứu của đề tài “XÂY DỰNG HỆ THỐNG BÃI GIỮ XE

 Tìm hiểu về thuật toán nhận diện khuôn mặt và thuật toán nhận diện biển số xe

 Tìm hiểu về công cụ phát triển

 Tìm hiểu, nghiên cứu về ngôn ngữ lập trình Python và thư viện OpenCV

 Tìm hiểu về phần mềm Visual Studio Code, pyQt5, MySQL Server

 Tìm hiểu xây dựng hệ thống trên nền tảng Desktop app

Cơ sở lý thuyết

1.2.1 Bài toán nhận diện khuôn mặt

1.2.1.1 Giới thiệu về bài toán nhận diện khuôn mặt

Hình 1 Nhận diện khuôn mặt

Nhận diện khuôn mặt là một phương pháp sinh trắc học dùng để xác định hoặc xác minh một cá nhân bằng cách so sánh dữ liệu hình ảnh trực tiếp hoặc ảnh kỹ thuật số với hồ sơ lưu trữ của người đó, thuộc lĩnh vực Biometrics và có sự tương đồng với nhận diện vân tay và mống mắt nhưng khác ở bước trích xuất đặc trưng (feature extraction) của từng công nghệ Mặc dù nhận diện vân tay và mống mắt đã đạt được độ chín và ứng dụng rộng rãi, nhận diện khuôn mặt vẫn đối mặt với nhiều thách thức và được xem là một lĩnh vực nghiên cứu đầy tiềm năng Nguồn dữ liệu cho nhận diện khuôn mặt phong phú hơn do có thể khai thác từ hình ảnh và video công khai, và nó đòi hỏi ít sự tương tác có kiểm soát hơn so với các hệ thống sinh trắc học khác như vân tay hay mống mắt Vì vậy, công nghệ nhận diện khuôn mặt có ứng dụng đa dạng từ an ninh và quản lý truy cập cho tới phân tích dữ liệu người dùng, đồng thời tiếp tục được nghiên cứu để cải thiện độ chính xác và đáng tin cậy trong nhiều môi trường thực tế.

Các hệ thống nhận dạng khuôn mặt thường được sử dụng cho các mục đích an ninh như kiểm soát an ninh tại tòa nhà, sân bay, máy ATM, tra cứu thông tin của tội phạm, phát hiện tội phạm ở nơi công cộng, và ngày càng được ứng dụng rộng rãi trong cuộc sống Bên cạnh những thành công đã được ghi nhận thì nhận dạng khuôn mặt cũng còn gặp nhiều khó khăn như về độ sáng, hướng nghiêng, kích thước hình ảnh, diện mạo, biểu hiện cảm xúc của khuôn mặt hay ảnh hưởng của tham số môi trường Để xây dựng một hệ thống nhận dạng khuôn mặt có đầu vào của hệ thống là một hình ảnh kỹ thuật số hay một khung hình video từ một nguồn video Đầu ra là xác định hoặc xác minh người ở trong bức hình hoặc trong video đó là ai Hướng tới mục tiêu này chúng ta thường chia thủ tục nhận dạng khuôn mặt gồm ba bước: Phát hiện khuôn mặt, trích rút đặc trưng và nhận dạng khuôn mặt.

Phát hiện khuôn mặt là bước đầu để xác định xem khuôn mặt có xuất hiện trong ảnh hoặc video hay không, và tỉ lệ phát hiện phụ thuộc vào ánh sáng, hướng mặt, biểu cảm cùng các yếu tố môi trường; sau khi phát hiện, hình ảnh khuôn mặt cần được chuẩn hóa về kích thước và ánh sáng để hệ thống nhận dạng hoạt động hiệu quả Trích rút đặc trưng sau đó tạo ra một vector đặc trưng đại diện cho khuôn mặt, đảm bảo tính duy nhất của khuôn mặt Trong nhận dạng khuôn mặt, các đặc trưng được so sánh với cơ sở dữ liệu khuôn mặt nhằm nhận diện hoặc xác thực, với nhiều phương pháp được áp dụng để đảm bảo tốc độ và độ tin cậy; các phương pháp này có thể được phân loại dựa trên dữ liệu đầu vào là ảnh tĩnh 2D hoặc 3D, như Elastic Bunch Graph và Active Appearance Model, và tương lai sẽ có 3D Morphable Model Trong thực tế, nhận dạng khuôn mặt được chia thành hai loại dựa trên các tiêu chí khác nhau.

 Nhận dạng dựa trên các đặc trưng của các phần tử trên khuôn mặt (Feature Base Face Recognition)

 Nhận dạng dựa trên xét tổng thể toàn khuôn mặt (Appearance Based Face Recognition)

1.2.1.2 Nhận dạng dựa trên các đặc trưng khuôn mặt Đây là phương pháp nhận dạng khuôn mặt dựa trên việc xác định các đặc trưng hình học của các chi tiết trên khuôn mặt như vị trí, diện tích, khoảng cách của mắt, mũi, miệng, ….và mỗi quan hệ giữa chúng ví dụ như khoảng cách giữa hai mắt Ưu điểm của phương pháp này là nó gần với cách mà con người sử dụng để nhận biết khuôn mặt Hơn nữa với việc xác định đặc tính và các mối quan hệ, phương pháp này cho kết quả tốt trong 7 các điều kiện không có kiểm soát Nhược điểm của phương pháp này là cài đặt thuật toán phức tạp do việc xác định mối quan hệ giữa các đặc tính, đòi hỏi các thuật toán phức tạp và phương pháp này sẽ hoạt động không hiệu quả khi kích thước hình ảnh nhỏ vì rất khó phân biệt được các đặc tính

1.2.1.3 Nhận dạng dựa trên xét toàn bộ khuôn mặt

Nội dụng chính của hướng tiếp cận này là xem mỗi ảnh có kích thước R x C là một vector trong không gian có R x C chiều Ta xây dựng một không gian mới có chiều nhỏ hơn sao cho khi biểu diễn trong không gian đó các đặc điểm chính trên khuôn mặt không bị mất đi Trong không gian đó các ảnh của cùng một người sẽ được tập trung lại thành một nhóm gần nhau và cách xa so với các nhóm khác Hai phương pháp thường được sử dụng trong hướng tiếp cận này là: - PCA (PrincipleComponents Analysis) - LDA (Linear Discriminant Analysis)

1.2.2 Bài toán nhận diện biển số

Hình 2 Nhận diện biển số xe

Nhận dạng biển số xe (ALPR/ANPR) đang trở thành công nghệ phổ biến trong các khu chung cư và trung tâm thương mại, nơi bảo vệ dùng camera an ninh để ghi lại biển số xe Dù biển số có thể bị mờ hoặc nhiễu do điều kiện ánh sáng và vận tốc xe, các thuật toán nhận diện biển số kết hợp với máy tính sẽ phân tích chữ cái và số trên biển để nhận diện một cách nhanh chóng Camera được đặt ở sau lối ra vào hoặc các vị trí giám sát sẽ truyền hình ảnh biển số về hệ thống để xác thực và kiểm soát ra/vào, hỗ trợ quản lý bãi đỗ xe và nâng cao an ninh cho khu vực Thuật toán nhận diện biển số xe là yếu tố then chốt giúp máy tính nhận diện chính xác ký tự trên biển số và tối ưu hóa quy trình cho người dùng.

1.2.2.2 Xử lý bài toán nhận diện biển số

Hình 3 Các bước nhận diện biển số

Bước 1: Định vị biển số hay còn gọi là phát hiện biển số: tìm khung chữ nhật gồm (x, y, width, height) bao lấy biển số trong ảnh Nếu tìm thấy thì crop biển số ra để xử lý bước tiếp theo, kết quả của bước này là ảnh biển số đã crop Bước này sử dụng thuật toán LBP cascade

Dùng Haar cascade học đặc trưng của 1 biển số, sau đó crop biển số Tuy nhiên bước này lại chưa chính xác lắm

Bước 2: Định vị ký tự hay còn gọi là tìm vị trí của ký tự trên biển số đã crop.

Kết quả của bước này là các ký tự màu đen, sau đó resize tất cả về cùng 1 kích thước Bước này dùng thuật toán Floodfill

Cùng dùng Haar cascade để tìm ra các ký tự trong biển số đã được crop

Bước 3: Nhận dạng ký tự bằng thuật toán Machine Learning, trong trường hợp này là SVM để phân lớp các ký tự

Cuối cùng là dung SVM để nhận dạng ký tự

Bước 4: Sắp xếp các kết quả nhận dạng và hiển thị ký tự theo định dạng biển số xe máy

1.2.3 Ngôn ngữ lập trình Python

Hình 4 Logo ngôn ngữ lập trình Python

Python là một ngôn ngữ lập trình thông dịch (interpreted), hướng đối tượng (object-oriented), và là một ngôn ngữ bậc cao (high-level) ngữ nghĩa động (dynamic semantics) Python hỗ trợ các module và gói (packages), khuyến khích chương trình module hóa và tái sử dụng mã Trình thông dịch Python và thư viện chuẩn mở rộng có sẵn dưới dạng mã nguồn hoặc dạng nhị phân miễn phí cho tất cả các nền tảng chính và có thể được phân phối tự do

1.2.3.2 Đặc trưng của ngôn ngữ lập trình Python

Tính phổ biến: Python có sự phát triển rất nhanh trong những năm gần đây.

Theo một khảo sát vào năm 2018 trên trang web Stack Overflow, Python được xếp hạng thứ 7 trong những ngôn ngữ lập trình phổ biến nhất và xếp hạng thứ nhất trong những công nghệ được ưa thích nhất năm Không những vậy, những công ty phần mềm hàng đầu thế giới sử dụng Python trong các dự án của họ mỗi ngày.

Dễ học: Khi so sánh giữ Python và các ngôn ngữ lập trình cấp cao khác như

Python được xem là dễ học hơn so với các ngôn ngữ lập trình như C++, C#, JavaScript và Java, nhờ cú pháp đơn giản, dễ hiểu và gần gũi với ngôn ngữ giao tiếp hàng ngày Với đặc tính này, Python đã được nhiều trường học trên thế giới đưa vào giảng dạy từ cấp tiểu học đến đại học, giúp học sinh làm quen nhanh với lập trình, phát triển tư duy logic và giải quyết vấn đề một cách hiệu quả.

Python là trình thông dịch miễn phí và mã nguồn mở, được phát triển dưới giấy phép mã nguồn mở do OSI công nhận, vì vậy bạn có thể tải xuống và cài đặt hoàn toàn miễn phí, kể cả khi dùng cho mục đích thương mại.

Ngôn ngữ hướng đối tượng: Hướng đối tượng là đặc trưng quan trọng của ngôn ngữ Python và các ngôn ngữ bậc cao hiện nay Phương pháp lập trình hướng đối tượng mô tả bài toán dưới sự tác động giữa các đối tượng và hiện thực vào chương trình máy tính Các đặc trưng quan trọng của một ngôn ngữ hướng đối tượng là: tính trừu tượng hóa (Abstraction), tính đóng gói (Encapsulation), tính kế thừa (Inheritance), tính đa hình (Polymorphism)

Python hỗ trợ lập trình giao diện người dùng thông qua các module mạnh mẽ như PyQt5, PyQt4 và Tkinter, cho phép xây dựng giao diện đồ họa trực quan và dễ sử dụng Nhờ các thư viện này, các ứng dụng Python có thể tạo GUI hấp dẫn, tối ưu trải nghiệm người dùng và thu hút sự chú ý của người dùng ngay từ lần dùng đầu tiên Việc tận dụng PyQt5, PyQt4 và Tkinter cũng giúp phát triển giao diện đa nền tảng, khả năng tùy biến cao và bảo trì dễ dàng cho các dự án lập trình giao diện.

Ngôn ngữ thông dịch: Hầu hết các ngôn ngữ lập trình đều chạy bằng trình biên dịch, đều này có nghĩa là source code mà bạn viết ra cần phải được dịch qua mã máy (machine code) trước khi chạy được chương trình Tuy nhiên, những chương trình được viết bằng ngôn ngữ thông dịch sẽ bỏ qua bước đó mà chạy thẳng qua trình thông dịch Điều này giúp ích rất nhiều trong quy trình phát triển chương trình của bạn, bời vì bạn chỉ cần gõ code và chạy thôi, chứ không cần phải qua một quá trình biên dịch nào cả

Khả năng mở rộng của Python cho phép nó được nhúng và mở rộng bằng các ngôn ngữ khác một cách linh hoạt, đồng thời có thể được thực thi thông qua trình biên dịch hoặc thông dịch tùy theo nhu cầu Điều này cho phép viết mã Python và tích hợp hoặc biên dịch nó bên trong các ngữ cảnh của ngôn ngữ khác, tận dụng những thư viện và hiệu suất của chúng Ví dụ điển hình là có thể viết mã Python và biên dịch hoặc nhúng nó vào C hoặc C++, từ đó kết nối giữa Python và các ứng dụng hiệu suất cao Nhờ đặc tính này, Python trở thành lựa chọn phù hợp cho các dự án đòi hỏi mở rộng sang ngôn ngữ khác mà vẫn giữ được sự linh hoạt và tiện lợi của Python.

Kết luận

Thông qua tìm hiểu về các khái niệm, kiến thức, ngôn ngữ, công cụ, sẽ sử dụng trong bài toán nhận diện khuôn mặt và biển số, từ đó làm cơ sở đề xuất để phân tích các yêu cầu và bước thiết kế sẽ được trình bày trong chương tiếp theo.

Phân tích và thiết kế hệ thống

Kết luận

Dựa trên những yêu cầu, bước thiết kế của hệ thống nhận diện khuôn mặt và biển số xe, để thực hiện nhằm giải quyết vấn đề ở bãi giữ xe, chúng ta có thể xây dựng hệ thống một cách dễ dàng hơn, và đó cũng là nội dung trong chương tiếp theo.

Triển khai xây dựng

Xây dựng môi trường làm việc

3.1.1 Cài đặt OpenCV và các công cụ phát triển

3.1.1.1 Cài đặt công cụ Visual Studio Code:

Visual Studio Code là trình biên soạn mã nguồn nhẹ mà mạnh mẽ, tích hợp đầy đủ các tính năng của một môi trường phát triển chuyên nghiệp như IntelliSense (tự gợi ý mã) và gỡ lỗi, cùng với hệ sinh thái extensions phong phú cho phép mở rộng thêm các chức năng có sẵn Visual Studio Code hiện hỗ trợ trên Windows, macOS và Linux, giúp lập trình viên làm việc hiệu quả trên nhiều nền tảng Bạn có thể tải Visual Studio Code phiên bản 1.12 tại đường dẫn: https://code.visualstudio.com

Hình 11 Cài đặt Visual Studio Code

Sau khi tải xong và tiến hành cài đặt, ta sẽ dùng Visual Code Studio để xây dựng ứng dụng

3.1.1.2 Tiến hành cài đặt Python và Anaconda

Anaconda là một nền tảng mã nguồn mở tích hợp, đóng vai trò là trình quản lý gói và trình quản lý môi trường đồng thời phân phối các ngôn ngữ lập trình Python và R Nền tảng này tích hợp sẵn Python kèm theo công cụ quản lý các thư viện Python, giúp người dùng cài đặt và duy trì các gói một cách dễ dàng Bạn cũng có thể cài đặt các IDE dành cho Python và R thông qua Anaconda, tối ưu hóa quá trình phát triển và thực thi mã cho các dự án dữ liệu và khoa học dữ liệu.

Các bạn truy cập trang web chính thức của anaconda để download bộ cài đặt:https://www.anaconda.com/download/

Sau khi cài đặt xong Anaconda, tiến hành cài đặt python và đưa đường dẫn python trong Anaconda vào trong $PATH của Windows

Chương 4 Cài đặt thư viện OpenCV

Tiến hành cài đặt OpenCV với ngôn ngữ lập trình Python

Trước khi cài đặt thì mình kiểm cần phải kiểm tra version của Python hiện tại của PC của mình bằng câu lệnh: python –version

Hình 12 Kiểm tra version Python

Pip là hệ thống quản lý các package của Python Mình có thể tìm kiếm các package mà pip hỗ trợ thông qua lệnh pip search. pip search ”opencv”

Như hình trên mình thấy, pip hiện tại hỗ trợ package opencv-python (phiên pip install opencv-python==3.4.2.16

Kiểm tra lại, nếu có thể import được OpenCV mà không báo lỗi thì việc cài đặt thành công.

Hình 15 Kiểm tra cài đặt opencv 4.1.1 Cài đặt SQLite

Hình 17 Tạo cơ sở dữ liệu 4.1.2 Cài đặt Flask

Nếu bạn đã cài Python và thiết lập môi trường thành công Bạn có thể sử dụng command sau đây để cài Flask:

Hình 18 Kiểm tra cài đặt Flask 4.1.3 Cài đặt PyQt5 và công cụ QtDesigner

Cài đặt PyQt5: gần đây nhất và được hỗ trợ nhiều nhất là PyQt5 Tiến hành cài đặt nó thôi nào: python -m pip install PyQt5

Tải về và cài đặt tại đây: https://build-system.fman.io/qt-designer-download

 Xây dựng giao diện bằng QtDesigner:

Hình 19 Xây dựng giao diện với QtDesigner

 Bước cuối cùng để tạo giao diện là chuyển giao diện này sang code PyQt5. Các bạn lưu file ui này vào ProjectFolder của mình nhé

 Sau đó các bạn chạy lệnh sau: python -m pyuic5 -x -o

#vi du: python -m pyuic5 -x giaodien.ui -o main.py

pyuic5 là công cụ đi kèm với PyQt5, cho phép chuyển file giao diện *.ui sang mã Python *.py để bạn có thể render giao diện như thiết kế ban đầu Bạn có thể dùng lệnh pyuic5 -x giaodien.ui -o main.py để sinh ra tệp main.py chứa phần giao diện, biến đổi từ *.ui sang *.py một cách nhanh chóng Đây là một chương trình hoàn chỉnh có thể chạy ngay, giúp bạn render và triển khai giao diện người dùng trong ứng dụng PyQt5 một cách trực quan Việc tích hợp pyuic5 với PyQt5 mang lại quy trình phát triển giao diện dễ dàng hơn và tối ưu hóa cho các dự án có các tệp *.ui.

Mô hình tổng thể của hệ thống bao gồm:

 Tạo hàm getData() dùng để thêm dữ liệu

 Tạo hàm train() để training dữ liệu

 Tạo hàm faceDetector() để nhận diện

 Tạo trang web để quản lí, hiển thị dữ liệu

 Tạo Desktop app để hiển thị, nhận diện đối tượng và nhận diện biển số

4.2.2 Xây dựng chi tiết ứng dụng

4.2.2.1 Xây dựng website để quản lí dữ liệu và train dữ liệu:

Thêm dữ liệu vào Database

@app.route('/getData',methods = ['POST', 'GET']) def getData(): if request.method == 'POST': try:

To enable real-time face detection with OpenCV, load the Haar cascade classifiers for faces and eyes Create a face cascade using the default frontal face model with cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml'), and create an eye cascade with cv2.CascadeClassifier('haarcascade_eye.xml') Then start video capture from the default camera using cv2.VideoCapture(0) This combination provides a straightforward OpenCV-based facial recognition workflow suitable for real-time applications.

#nhap du lieu id = request.form['inputID'] name = request.form['inputName'] age = request.form['inputAge'] job = request.form['inputJob'] sex = request.form['inputSex'] date = request.form['inputDate']

An OpenCV-based pipeline to collect data from a camera for face detection in real time starts by initializing a sample counter and looping to read frames from the video source, converts each frame to grayscale with cv2.cvtColor, runs the cascade classifier (face_cascade.detectMultiScale) on the grayscale image to locate faces, draws green bounding boxes around detected faces using cv2.rectangle, and ensures a dataSet directory exists by creating it if needed with os.makedirs; this setup provides a continuous data collection workflow for building a labeled face dataset useful for training and recognition.

During execution, the sample number is incremented, a cropped grayscale face image is saved as dataSet/User.{id}.{sampleNum}.jpg, and the camera resources and OpenCV windows are released The code then connects to the SQLite database at E:/BT/DACN/FaceBase.db, inserts a new row into the people table with ID, Name, Age, Job, Sex, and Date using the collected values, and commits the transaction On success, a message 'Record successfully added' is prepared; if an exception occurs, the transaction is rolled back and an error message is prepared Finally, the script renders a result page with the message and closes the database connection.

Dữ liệu lưu được vào SQLite:

Hình 20 Dữ liệu được lưu trong Sqlite

Train dữ liệu có trong file dataSet:

@app.route('/train') def train(): recognizer = cv2.face.LBPHFaceRecognizer_create() path = 'dataSet' def getImageWithID(path): imagePaths = [os.path.join(path, f) for f in os.listdir(path)] faces = []

IDs = [] for imagePath in imagePaths: faceImg = Image.open(imagePath).convert('L') faceNp = np.array(faceImg,'uint8')

ID = int(os.path.split(imagePath)[-1].split(".")[2])

#add to array faces.append(faceNp)

IDs.append(ID) cv2.imshow("training", faceNp) cv2.waitKey(10) return IDs, faces

To train a face recognition model, the code retrieves image data and IDs with getImageWithID(path) and trains the recognizer using the faces and IDs array (recognizer.train(faces, np.array(Ids))) If the recognizer directory does not exist, it is created, and the trained model is saved to recognizer/trainingData.yml Finally, any OpenCV windows are closed with cv2.destroyAllWindows(), and the function returns the index page via render_template('index.html').

4.2.2.2 Xây dựng Desktop App nhận diện khuôn mặt và nhận diện biển số

Quy trình xây dựng hệ thống nêu trên đã cho ra các kết quả, các chức năng cài đặt được của hệ thống

Chương 5 Kết luận và định hướng phát triển

Qua quá trình tìm hiểu ngôn ngữ lập trình Python, các thư viện PyQt5 và OpenCV, cùng với Visual Studio Code và các kỹ thuật liên quan, nhóm đã nắm bắt được kiến thức và hoàn thành đề tài Sự hỗ trợ của thầy cô và bạn bè đã giúp nhóm vượt qua khó khăn, áp dụng hiệu quả những công cụ và công nghệ mới vào dự án Bài viết tóm lược quá trình học hỏi và ứng dụng Python, PyQt5, OpenCV và Visual Studio Code để giải quyết các bài toán của đề tài và nêu bật kết quả đạt được.

“XÂY DỰNG HỆ THỐNG BÃI GIỮ XE THÔNG MINH”

Các chức năng đã được cài đặt hoàn chỉnh, cụ thể:

 Hệ thống có thể đưa xe vào và lấy xe ra

 Camera có thể chụp được ảnh và nhận diện được khuôn mặt người và nhận diện được biển số xe

Bên cạnh những kết quả đạt được thì hệ thống không tránh khỏi sai sót:

 Hệ thống chạy thực sự chưa ổn định

 Nhận diện biển số xe chưa hoàn toàn đúng, đôi lúc bị sai do không có mẫu hoàn chỉnh

 Nhận diện không được khi camera bị mờ

5.2 Định hướng phát triển Để khắc phục những hạn chế nêu trên, nhóm sẽ cố gắng phát triển đề tài trong tương lai được tốt và hoàn thiện thêm các chức năng sau:

 Hoàn chỉnh giao diện sinh động, dễ thực hiện các thao tác

 Hoàn chỉnh, nâng cấp để hệ thống có thể hoạt động ổn định

 Tìm hiểu thêm về thuật toán để có thể nhận diện khuôn mặt và nhận diện biển số chính xác nhất

 Tăng cường tính an toàn và bảo mật cho dữ liệu cũng như xây dựng hệ thống bảo mật trên đường truyền.

 Thực hiện các chức năng chưa cài đặt như: tính tiền thông qua thẻ ngân hàng, gửi dữ liệu đến khách hàng để tiện theo dõi

DANH MỤC TÀI LIỆU THAM KHẢO

(2) https://vi.wikipedia.org/wiki/MySQL

Ngày đăng: 20/11/2021, 08:25

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w