Đồ án trí tuệ nhân tạo: Phân loại hàng hóa bằng đọc mã vạch tại Trường Đại học Nguyễn Tất Thành

Đồ án nghiên cứu trí tuệ nhân tạo đề tài phân loại hàng hóa bằng đọc mã vạch, áp dụng công nghệ tiên tiến, tối ưu giải pháp kỹ thuật cho bài toán .

Chuyên ngành

Trí Tuệ Nhân Tạo

Người đăng

Ẩn danh

Thể loại

Đồ án

2019 – 2023

45
1
0

Phí lưu trữ

30 Point

Tóm tắt

I. Toàn cảnh đồ án AI phân loại hàng hóa bằng đọc mã vạch

Trong bối cảnh cuộc cách mạng công nghiệp 4.0, tự động hóa đang trở thành yếu tố cốt lõi trong nhiều lĩnh vực, đặc biệt là quản lý và logistics. Đồ án trí tuệ nhân tạo với đề tài phân loại hàng hóa bằng đọc mã vạch là một minh chứng rõ nét cho xu hướng này. Nghiên cứu tập trung vào việc ứng dụng các kiến thức về trí tuệ nhân tạo (AI)xử lý ảnh để xây dựng một hệ thống tự động, có khả năng nhận diện và phân loại sản phẩm một cách nhanh chóng và chính xác. Mục tiêu chính là tạo ra một chương trình không chỉ giúp tối ưu hóa quy trình quản lý kho hàng mà còn nâng cao năng suất cho chuỗi cung ứng Logistics. Hệ thống này được phát triển dựa trên ngôn ngữ lập trình Python, kết hợp các thư viện mạnh mẽ để giải quyết bài toán nhận dạng. Việc sử dụng camera để quét mã thay thế cho các phương pháp nhập liệu thủ công truyền thống hứa hẹn mang lại hiệu quả vượt trội, giảm thiểu sai sót của con người và tiết kiệm thời gian đáng kể. Đồ án này không chỉ là một bài tập học thuật mà còn mở ra tiềm năng ứng dụng thực tiễn to lớn cho các doanh nghiệp tại Việt Nam, giúp họ nâng cao năng lực cạnh tranh trong môi trường kinh doanh hiện đại. Nghiên cứu này là sự kết hợp giữa lý thuyết và thực nghiệm, từ việc tìm hiểu các thuật toán đến xây dựng một ứng dụng hoàn chỉnh.

1.1. Tầm quan trọng của việc phân loại hàng hóa tự động

Phân loại hàng hóa là một khâu thiết yếu trong quản lý kho và chuỗi cung ứng. Việc thực hiện quy trình này một cách thủ công thường tốn nhiều thời gian, nhân lực và dễ xảy ra sai sót. Tự động hóa quá trình này giúp xác định chính xác đặc điểm, thành phần và quy cách của sản phẩm, từ đó sắp xếp chúng một cách khoa học. Tài liệu gốc nhấn mạnh rằng các hệ thống phân loại thông minh có thể tăng hiệu suất công việc lên đến 80%. Điều này đặc biệt quan trọng đối với các doanh nghiệp lớn và các tập đoàn đa quốc gia, nơi khối lượng hàng hóa cần xử lý là khổng lồ. Một hệ thống phân loại hàng hóa bằng đọc mã vạch tự động giúp giảm chi phí vận hành, nâng cao chất lượng dịch vụ và tăng cường khả năng cạnh tranh trên thị trường. Đây là một bước tiến quan trọng để hiện đại hóa ngành logistics và sản xuất.

1.2. Mục tiêu và phạm vi nghiên cứu của đồ án AI

Mục tiêu cốt lõi của đồ án là nghiên cứu và áp dụng các phương pháp nhận diện hình ảnh để xây dựng một chương trình quét mã vạchQR code hiệu quả. Chương trình này không chỉ nhận dạng mã mà còn liên kết chúng với thông tin sản phẩm được lưu trữ, hỗ trợ việc quản lý một cách tiện lợi. Phạm vi nghiên cứu tập trung vào việc xử lý dữ liệu hình ảnh thu thập từ camera. Dữ liệu đầu vào là các loại BarcodeQR code được tạo ra bằng Python. Công cụ chính được sử dụng là Pycharm, một môi trường phát triển tích hợp mạnh mẽ cho Python. Đồ án không đi sâu vào việc phát triển phần cứng mà tập trung vào việc xây dựng phần mềm, thuật toán nhận diện và giao diện người dùng, tạo ra một giải pháp hoàn chỉnh có thể triển khai trên các hệ thống máy tính thông thường.

1.3. Các công nghệ nền tảng được áp dụng trong đề tài

Trí tuệ nhân tạo (AI)Xử lý ảnh là hai trụ cột công nghệ của đồ án. Xử lý ảnh là quá trình thao tác trên ảnh đầu vào để thu được kết quả mong muốn, từ việc nâng cao chất lượng ảnh đến nhận dạng đối tượng. Thư viện OpenCV (Open Source Computer Vision Library), được viết bằng C/C++, là công cụ chủ đạo được sử dụng cho các tác vụ này nhờ tốc độ tính toán cao và khả năng ứng dụng thời gian thực. Bên cạnh đó, đồ án còn sử dụng thư viện Zbar để giải mã BarcodeQR code, thư viện Tkinter để xây dựng giao diện đồ họa người dùng (GUI), và Pandas để làm việc với dữ liệu lưu trữ trong file Excel. Sự kết hợp của các công nghệ này tạo nên một hệ thống mạnh mẽ và toàn diện.

II. Thách thức quản lý giải pháp phân loại hàng hóa tự động

Quản lý hàng hóa theo phương pháp truyền thống đối mặt với nhiều thách thức lớn. Việc kiểm kê, sắp xếp và truy xuất thông tin sản phẩm thủ công không chỉ chậm chạp mà còn tiềm ẩn nguy cơ sai sót cao, gây thất thoát và ảnh hưởng đến toàn bộ chuỗi cung ứng. Đặc biệt, với sự đa dạng của hàng hóa và quy mô kho bãi ngày càng lớn, các phương pháp này trở nên lỗi thời và kém hiệu quả. Giải pháp phân loại hàng hóa bằng đọc mã vạch ra đời để giải quyết triệt để những vấn đề này. Bằng cách mã hóa thông tin sản phẩm vào Barcode hoặc QR code, hệ thống có thể sử dụng camera để quét và nhận diện tự động. Quá trình này diễn ra gần như tức thì, đảm bảo độ chính xác tuyệt đối. Đồ án này đề xuất một giải pháp phần mềm hoàn chỉnh, từ khâu nhận diện hình ảnh, giải mã thông tin, đối chiếu dữ liệu đến việc tương tác với người dùng qua một giao diện thân thiện. Giải pháp này không đòi hỏi đầu tư lớn vào phần cứng chuyên dụng, mà có thể tận dụng các máy tính và camera thông thường, giúp doanh nghiệp dễ dàng tiếp cận và triển khai công nghệ trí tuệ nhân tạo.

2.1. Hạn chế của phương pháp quản lý hàng hóa thủ công

Phương pháp quản lý thủ công dựa nhiều vào sức người và giấy tờ sổ sách. Nhân viên kho phải ghi chép, đối chiếu và kiểm đếm bằng tay, dẫn đến tốc độ xử lý chậm và không thể đáp ứng nhu cầu của các doanh nghiệp quy mô lớn. Sai sót trong việc ghi nhầm mã sản phẩm, số lượng, hay vị trí lưu trữ là điều khó tránh khỏi, gây ra tình trạng tồn kho ảo, thất thoát hàng hóa và giao hàng sai. Hơn nữa, việc truy xuất lịch sử của một sản phẩm cụ thể cũng rất khó khăn và mất thời gian. Những hạn chế này làm giảm hiệu quả hoạt động, tăng chi phí vận hành và ảnh hưởng tiêu cực đến sự hài lòng của khách hàng. Đây chính là động lực thúc đẩy sự ra đời của các hệ thống phân loại hàng hóa tự động.

2.2. Ưu điểm vượt trội của công nghệ Barcode và QR code

Barcode (mã vạch 1D) và QR code (mã vạch 2D) là công nghệ nhận dạng tự động mang lại nhiều lợi ích. Barcode biểu diễn dữ liệu qua các vạch thẳng có độ rộng khác nhau, cho phép thu thập thông tin nhanh chóng. QR code, với cấu trúc ma trận hai chiều, có khả năng lưu trữ lượng dữ liệu lớn hơn nhiều, bao gồm cả ký tự, số và đường dẫn URL. Theo tài liệu nghiên cứu, QR code còn có khả năng tự sửa lỗi, đảm bảo dữ liệu vẫn có thể đọc được ngay cả khi mã bị hỏng một phần. Việc áp dụng hai công nghệ này trong đồ án trí tuệ nhân tạo giúp quá trình nhập liệu trở nên chính xác, nhanh chóng và loại bỏ hoàn toàn các lỗi do con người gây ra, tạo nền tảng vững chắc cho một hệ thống quản lý hiệu quả.

III. Hướng dẫn xây dựng hệ thống đọc mã vạch với Zbar OpenCV

Việc xây dựng hệ thống nhận diện và phân loại hàng hóa bằng đọc mã vạch đòi hỏi sự kết hợp nhuần nhuyễn giữa nhiều thư viện và công nghệ. Trọng tâm của hệ thống là khả năng xử lý hình ảnh và giải mã dữ liệu từ BarcodeQR code. Đồ án đã lựa chọn một bộ công cụ hiệu quả, bao gồm OpenCV cho các tác vụ xử lý hình ảnh và Zbar cho việc giải mã. OpenCV là thư viện mã nguồn mở hàng đầu về thị giác máy tính, cung cấp các hàm để thu nhận hình ảnh từ camera, chuyển đổi không gian màu (ví dụ từ BGR sang RGB), và vẽ các đường viền xung quanh đối tượng được nhận diện. Zbar là một thư viện gọn nhẹ nhưng rất mạnh mẽ, được xây dựng trên C/C++, có khả năng nhận dạng nhiều loại mã vạch khác nhau từ ảnh tĩnh hoặc luồng video trực tiếp. Quy trình hoạt động bắt đầu bằng việc camera thu nhận hình ảnh, sau đó OpenCV tiền xử lý ảnh để tăng độ rõ nét. Cuối cùng, ảnh được đưa vào bộ giải mã của Zbar để trích xuất dữ liệu chứa trong mã vạch. Sự kết hợp này tạo ra một module nhận diện nhanh và chính xác, là trái tim của toàn bộ ứng dụng trí tuệ nhân tạo.

3.1. Vai trò của thư viện xử lý ảnh OpenCV

Trong đồ án này, OpenCV đóng vai trò là cầu nối giữa camera và thuật toán giải mã. Chức năng chính của nó là thu nhận luồng video thời gian thực từ camera của máy tính (Hinh.read()[1]). Sau khi có được khung hình, OpenCV thực hiện một bước quan trọng là chuyển đổi không gian màu từ BGR (mặc định của OpenCV) sang RGB, phù hợp cho các thư viện xử lý ảnh khác. Ngoài ra, sau khi thư viện Zbar xác định được vị trí của mã vạch, OpenCV được dùng để vẽ một hình chữ nhật bao quanh mã vạch đó trên màn hình (cv2.polylines). Điều này giúp người dùng dễ dàng nhận biết mã nào đang được quét, mang lại trải nghiệm tương tác trực quan và sinh động. Tốc độ xử lý nhanh của OpenCV là yếu tố quyết định để hệ thống hoạt động mượt mà trong thời gian thực.

3.2. Giải mã Barcode và QR code hiệu quả với Zbar

Zbar là thư viện chuyên dụng được lựa chọn để thực hiện nhiệm vụ giải mã. Theo mô tả trong tài liệu, Zbar có thể nhận dữ liệu trực tiếp từ camera hoặc file ảnh. Trong đồ án, hàm decode(img) từ thư viện pyzbar (một wrapper của Zbar cho Python) được sử dụng. Hàm này sẽ quét toàn bộ hình ảnh đầu vào (img) và trả về một danh sách các đối tượng mã vạch mà nó tìm thấy. Mỗi đối tượng này chứa thông tin quan trọng như dữ liệu được mã hóa (barcode.data) và tọa độ vị trí của mã vạch (barcode.rect). Nhờ sự hiệu quả của Zbar, chương trình có thể nhận dạng chính xác nhiều loại mã vạch khác nhau mà không cần các bước tiền xử lý phức tạp, giúp đơn giản hóa thuật toán nhận dạng và tăng tốc độ hoạt động của toàn hệ thống.

IV. Phương pháp thiết kế giao diện Tkinter và thuật toán xử lý

Một hệ thống phân loại hàng hóa hiệu quả không chỉ cần có lõi xử lý mạnh mẽ mà còn phải có một giao diện người dùng (GUI) trực quan và dễ sử dụng. Đồ án đã sử dụng Tkinter, gói công cụ GUI tiêu chuẩn của Python, để xây dựng giao diện. Giao diện này cho phép người dùng xem hình ảnh từ camera, hiển thị thông tin mã vạch được quét, nhập liệu thông tin sản phẩm mới, và quản lý danh sách hàng hóa đã lưu. Thuật toán xử lý của chương trình được thiết kế theo một lưu đồ hoạt động rõ ràng. Khi một mã vạch được quét, hệ thống sẽ kiểm tra xem mã đó đã tồn tại trong cơ sở dữ liệu (file Excel) hay chưa. Nếu đã tồn tại, chương trình sẽ phát ra âm thanh xác nhận và hiển thị thông tin tương ứng. Nếu chưa, nó sẽ thông báo và cho phép người dùng nhập thông tin sản phẩm mới (tên, khu vực) để thêm vào cơ sở dữ liệu. Toàn bộ logic này được quản lý chặt chẽ để đảm bảo tính đồng bộ giữa giao diện, hoạt động quét mã và file lưu trữ dữ liệu, tạo nên một ứng dụng trí tuệ nhân tạo hoàn chỉnh.

4.1. Xây dựng giao diện người dùng trực quan với Tkinter

Tkinter được chọn vì sự đơn giản và được tích hợp sẵn trong Python. Giao diện của đồ án được bố trí một cách logic, bao gồm các thành phần chính: một khung hiển thị video từ camera, các nhãn (Label) để hiển thị mã vạch quét được và thông tin sản phẩm, các ô nhập liệu (Entry) để người dùng thêm sản phẩm mới, các nút bấm (Button) cho các chức năng như “Thêm sản phẩm”, “Xóa dữ liệu”. Tài liệu gốc cung cấp đoạn code chi tiết về cách tạo và sắp xếp các widget này bằng phương thức place(), cho phép định vị chính xác từng thành phần trên cửa sổ. Giao diện cũng hiển thị thông tin về nhóm sinh viên thực hiện và giảng viên hướng dẫn, tạo nên một sản phẩm hoàn chỉnh và chuyên nghiệp.

4.2. Lưu đồ thuật toán và logic xử lý của hệ thống

Lưu đồ thuật toán hệ thống được trình bày rõ trong Chương 2 của tài liệu. Quy trình bắt đầu với việc khởi động camera. Hệ thống vào một vòng lặp vô hạn để liên tục đọc khung hình. Trong mỗi vòng lặp, nó thực hiện nhận diện mã vạch. Nếu phát hiện một mã, hệ thống sẽ trích xuất dữ liệu. Dữ liệu này sau đó được so sánh với danh sách các mã sản phẩm đã lưu trong file Excel (sử dụng thư viện PandasOpenpyxl để đọc dữ liệu). Dựa trên kết quả so sánh, hệ thống sẽ đưa ra phản hồi tương ứng: thông báo “Đã xác nhận” hoặc “Chưa xác nhận”. Logic này đảm bảo rằng mọi hoạt động đều được xử lý một cách tuần tự và chính xác, từ nhận dạng đến truy xuất và cập nhật dữ liệu, là nền tảng cho việc phân loại hàng hóa tự động.

4.3. Tích hợp trợ lý ảo và các thư viện hỗ trợ khác

Điểm đặc biệt của đồ án là việc tích hợp một trợ lý ảo đơn giản sử dụng thư viện speech_recognitionpyttsx3. Trợ lý này có thể nhận lệnh bằng giọng nói như “Xin chào”, “mở Google” hoặc “xoá dữ liệu”. Mặc dù chức năng này còn hạn chế, nó cho thấy hướng phát triển tiềm năng về việc tương tác với hệ thống một cách tự nhiên hơn. Ngoài ra, các thư viện khác như datetime được dùng để lấy thời gian thực, webbrowser để mở trang web, và threading để chạy các tác vụ song song (ví dụ, chạy trợ lý ảo mà không làm gián đoạn luồng video chính). Sự tích hợp đa dạng các thư viện này làm cho ứng dụng trở nên phong phú và đa năng hơn.

V. Kết quả thực nghiệm Ứng dụng AI phân loại hàng hóa hiệu quả

Sau quá trình triển khai thuật toán và xây dựng giao diện, đồ án đã tiến hành chạy thử nghiệm thực tế và đạt được những kết quả đáng ghi nhận. Chương trình đã chứng tỏ khả năng nhận diện chính xác và nhanh chóng cả BarcodeQR code trong điều kiện ánh sáng phòng thông thường. Khi một mã vạch được đưa vào vùng quét của camera, hệ thống phản hồi gần như ngay lập tức. Nếu mã vạch đã được lưu trong file Excel, chương trình sẽ hiển thị trạng thái “Đã xác nhận” và phát ra giọng nói “Mã Sản Phẩm Là: [dữ liệu mã vạch]”. Ngược lại, nếu là mã mới, thông báo “Sản Phẩm Chưa Được Thêm” sẽ được đưa ra. Chức năng thêm, xóa thông tin sản phẩm trực tiếp trên giao diện và đồng bộ hóa với file Excel hoạt động ổn định. Các hộp thoại cảnh báo (MessageBox) cũng được tích hợp để ngăn người dùng thực hiện các thao tác không hợp lệ, như xóa dòng tiêu đề hoặc thêm sản phẩm khi chưa nhập đủ thông tin. Những kết quả này khẳng định tính khả thi và hiệu quả của giải pháp phân loại hàng hóa bằng đọc mã vạch dựa trên trí tuệ nhân tạo.

5.1. Quy trình hoạt động và kết quả nhận dạng thực tế

Quá trình thực nghiệm được mô tả chi tiết trong Chương 3. Đầu tiên, người dùng đưa một sản phẩm có mã vạch trước camera. Chương trình sẽ quét và hiển thị mã code lên giao diện. Nếu là sản phẩm mới, người dùng sẽ nhập các thông tin cần thiết như ID, tên sản phẩm, khu vực vào các ô tương ứng và nhấn nút “Thêm sản phẩm”. Dữ liệu này ngay lập tức được ghi vào dòng cuối cùng của file TriTueNhanTao.xlsx. Khi quét lại mã vạch đó, hệ thống sẽ nhận ra và xác nhận thành công. Hình ảnh minh họa trong báo cáo cho thấy rõ các trạng thái khác nhau của chương trình, từ việc đọc mã mới, nhập thông tin, cho đến đọc lại mã đã lưu, chứng tỏ hệ thống hoạt động đúng như thiết kế.

5.2. Quản lý dữ liệu sản phẩm thông qua file Excel

Việc sử dụng file Excel làm cơ sở dữ liệu là một lựa chọn hợp lý cho quy mô của đồ án. Thư viện PandasOpenpyxl trong Python cung cấp các công cụ mạnh mẽ để đọc, ghi và thao tác với dữ liệu trong file Excel một cách dễ dàng. Chương trình có thể đọc toàn bộ cột chứa mã sản phẩm để kiểm tra sự tồn tại, thêm một dòng mới khi có sản phẩm mới, và xóa một dòng được chỉ định bởi người dùng. Sự đồng bộ hóa dữ liệu giữa giao diện và file Excel đảm bảo tính nhất quán và toàn vẹn của thông tin. Mặc dù Excel không phải là một hệ quản trị cơ sở dữ liệu chuyên nghiệp, nó đủ linh hoạt và quen thuộc để đáp ứng yêu cầu của bài toán phân loại hàng hóa trong phạm vi nghiên cứu này.

VI. Hướng phát triển cho đồ án đọc mã vạch và trí tuệ nhân tạo

Mặc dù đã đạt được những kết quả ban đầu khả quan, đồ án phân loại hàng hóa bằng đọc mã vạch vẫn còn nhiều tiềm năng để phát triển và hoàn thiện trong tương lai. Nhóm tác giả đã thẳng thắn nhìn nhận những hạn chế của hệ thống hiện tại, đồng thời đề xuất những hướng đi mới đầy hứa hẹn. Một trong những hạn chế lớn là việc chưa thể truy xuất trực tiếp dữ liệu từ một cơ sở dữ liệu trực tuyến mà còn phụ thuộc vào file Excel cục bộ. Trợ lý giọng nói cũng mới ở mức cơ bản, chưa thể can thiệp sâu vào các chức năng quản lý dữ liệu. Hướng phát triển trong tương lai có thể tập trung vào việc xây dựng một phần mềm độc lập, hoàn chỉnh hơn, có thể kết nối với các hệ quản trị cơ sở dữ liệu thực thụ như SQL. Việc cải tiến trợ lý ảo để thực hiện các lệnh phức tạp hơn như “thêm sản phẩm A vào khu vực B” cũng là một mục tiêu hấp dẫn. Những cải tiến này sẽ giúp đưa ứng dụng trí tuệ nhân tạo này từ một đồ án học thuật trở thành một công cụ mạnh mẽ, sẵn sàng triển khai trong môi trường doanh nghiệp.

6.1. Những hạn chế còn tồn tại của hệ thống hiện tại

Báo cáo đã chỉ ra hai hạn chế chính. Thứ nhất, việc truy xuất dữ liệu từ mã vạch chưa hoàn toàn trực tiếp, nghĩa là hệ thống chỉ nhận dạng mã code chứ chưa thể tự động lấy thông tin chi tiết của sản phẩm từ một nguồn dữ liệu toàn cầu. Toàn bộ thông tin vẫn phải được nhập và quản lý thủ công trong file Excel. Thứ hai, trợ lý giọng nói còn bị giới hạn, chưa thể tương tác sâu với file dữ liệu. Ví dụ, người dùng chưa thể ra lệnh bằng giọng nói để truy vấn thông tin một sản phẩm cụ thể hay thêm một sản phẩm mới. Khắc phục những điểm này sẽ là bước đi quan trọng để nâng cao tính tự động và thông minh của hệ thống.

6.2. Tiềm năng phát triển phần mềm và ứng dụng thực tiễn

Hướng phát triển tương lai rất rộng mở. Nhóm đề xuất xây dựng một phần mềm hoàn chỉnh, dễ dàng cài đặt và sử dụng cho mọi đối tượng người dùng. Thay vì phụ thuộc vào Excel, phần mềm này nên có một cơ sở dữ liệu riêng hoặc kết nối với các hệ thống quản trị kho hiện có của doanh nghiệp. Chức năng quét mã vạch có thể được nâng cấp để hiển thị đầy đủ thông tin sản phẩm (hình ảnh, giá, nhà sản xuất) ngay trên giao diện. Trợ lý giọng nói có thể được phát triển để trở thành một công cụ điều khiển chính, cho phép người dùng thực hiện các thao tác thêm, xóa, sửa dữ liệu mà không cần dùng đến chuột và bàn phím. Những cải tiến này sẽ biến đồ án trí tuệ nhân tạo này thành một giải pháp thương mại tiềm năng cho ngành chuỗi cung ứng Logistics.

11/09/2025

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

Chương 1: Tổng Quan 1.1 Một số khái niệm cơ bản 1.1 Trí tuệ nhân tạo Trí tuệ nhân tạo AI là trí thông minh của máy do con người tạo ra. Ngay từ khi chiếc máy tính điện tử đầu tiên ra đời, các nhà khoa học máy tính đã hướng đến phát hiển hệ thống máy tính (gồm cả phần cứng và phần mềm) sao cho nó có khả năng thông minh như loài người. Mặc dù cho đến nay, theo quan niệm của người viết, ước mơ này vẫn còn xa mới thành hiện thực, tuy vậy những thành tựu đạt được cũng không hề nhỏ: chúng ta đã làm được các hệ thống (phần mềm chơi cờ vua chạy trên siêu máy tinh GeneBlue) có thể thắng được vua cờ thế giới; chúng ta đã làm được các phần mềm có thể chứng minh được các bài toán hình học; v. Hay nói cách khác, trong một số lĩnh vực, máy tính có thể thực hiện tốt hơn hoặc tương đương con người (tất nhiên không phải tất cả các lĩnh vực).

Hình ảnh AI 15 1.2 Xử lý ảnh Xử lý ảnh là một trong những mảng quan trọng nhất trong kỹ thuật thị giác máy tính, là tiền đề cho nhiều nghiên cứu thuộc lĩnh vực này. Hai nhiệm vụ cơ bản của quá trình xử lý ảnh là nâng cao chất lượng thông tin hình ảnh và xử lý số liệu cung cấp cho các quá trình khác trong đó có việc ứng dụng thị giác vào điều khiển. Quá trình bắt đầu từ việc thu nhận ảnh nguồn (từ các thiết bị thu nhận ảnh dạng số hoặc tương tự) gửi đến máy tính. Dữ liệu ảnh được lưu trữ ở định dạng phù hợp với quá trình xử lý.

Người lập trình sẽ tác động các thuật toán tương ứng lên dữ liệu ảnh nhằm thay đổi cấu trúc ảnh phù hơp với các ứng dụng khác nhau. Quá trình xử lý nhận dạng ảnh được xem như là quá trình thao tác ảnh đầu vào nhằm cho ra kết quả mong muốn. Kết quả đầu ra của một quá trình xử lý ảnh có thể là một ảnh “đã được xử lý” hoặc một kết luận. Ảnh có thể xem là tập hợp các điểm ảnh và mỗi điểm ảnh được xem như là đặc trưng cường độ sáng hay một dấu hiệu nào đó tại một vị trí nào đó của đối tượng trong không gian và nó có thể xem như một hàm n biến P(c,c1,c2,…).Do đó,ảnh trong xử lý ảnh có thể xem như ảnh n chiều.3 Open CV OpenCV (Open Computer Vision) là một thư viện mã nguồn mở hàng đầu cho xử lý về thị giác máy tính, machine learning, xử lý ảnh.

OpenCV đươc viết bằng C/C++, vì vậy có tốc độ tính toán rất nhanh, có thể sử dụng với các ứng dụng liên quan đến thời gian thực. Opencv có các interface cho C/C++, Python Java vì vậy hỗ trợ được cho Window, Linux, MacOs lẫn Android, iOS OpenCV có cộng đồng hơn 47 nghìn người dùng và số lượng download vượt quá 6 triệu lần Chức năng có trong thư viện OpenCV: Thư viện OpenCV bao gồm một số tính năng nổi bật như:  Bộ công cụ hỗ trợ 2D và 3D  Nhận diện khuôn mặt  Nhận diện cử chỉ 16  Nhận dạng chuyển động, đối tượng, hành vi,  Tương tác giữa con người và máy tính  Điều khiển Robot  Hỗ trợ thực tế tăng cường 1.4 Tkinter Là một gói trong Python có chứa module Tk hỗ trợ cho việc lập trình giao diện (GUI). Tk ban đầu được viết bằng ngôn ngữ Tcl. Sau đó Tkinter được viết ra để sử dụng Tk bằng trình thông dịch Tcl trên nền Python.

Ngoài Tkinter ra còn có một số công cụ khác giúp tạo một ứng dụng GUI viết bằng Python như wxPython, PyQt, và PyGTk.5 Zbar Để giải mã Barcode và QR code ta sử dụng thư viện Zbar là 1 thư viện đa nền tảng, gọn nhẹ và cho kết quả nhận dạng tốt. Thư viện được xây dựng trên mã nguồn C/C+ + nên dễ dàng chạy trên nền tảng IOS, Android và Linux. Zbar có thể nhận dữ liệu trực tiếp từ Camera hoặc file ảnh, video sau đấy đưa vào bộ giải mã decoder để xử lý và nhận dạng Cách cài thư viện Zbar trong python: pip install pyzbar 17 Nguồn: https://sites.com/site/embedded247/npcourse/impcourse/barcode_qrcode Hình 1. Mô hình hệ thống của Zbar 1.6 Numpy Numpy là một thư viện lõi phục vụ cho khoa học máy tính của Python, hỗ trợ cho việc tính toán các mảng nhiều chiều, có kích thước lớn với các hàm đã được tối ưu áp dụng lên các mảng nhiều chiều đó.

Numpy đặc biệt hữu ích khi thực hiện các hàm liên quan tới Đại Số Tuyến Tính.7 pyttsx3 là thư viện chuyển đổi văn bản thành giọng nói 1.8 Date time 18 Thư viện datetime trong python được chia làm 4 lớp chính: - Date – Chỉ ngày, tháng, năm - Time – Chỉ thời gian trong ngày (Giờ, phút, giây, micro giây) - Datetime – Kết hợp thời gian và ngày (Ngày, tháng, năm, giờ, phút, giây, micro giây) - Timedelta – Dùng để tính toán thời gian trong quá khứ và tương lai 1.9 Thread Là thư viện chạy chương trình đa luồng dùng để chạy song song các chương trình trong cùng 1 thời điểm 1.10 webbrowser là thư viện mở đường link trang web trong python 1.11 pandas Là một thư viện Python cung cấp các dữ liệu nhanh, mạnh mẽ, linh hoạt. Pandas được thiết kế để làm việc dễ dàng và trực quan với dữ liệu có cấu trúc (dạng bảng, đa chiều, không đồng nhất) và dữ liệu chuỗi thời gian, dùng hiển thị cấu trúc dữ liệu trong file excel dưới dạng cột và dòng 1.12 speech_recognition là thư viện nhận dạng giọng nói trong Python 1.13 pathlib là thư viện đường dẫn liên kết đến thư mục mà ta khai báo trong chương trình 1.14 Workbook là thư viện đọc toàn bộ file Excel 1.2 Tổng quan về Barcode và QR code 1.1 Giới thiệu về barcode: Barcode (hay còn được gọi là mã vạch) là phương pháp lưu trữ và truyền tải thông tin bằng một lọai ký hiệu gọi là ký mã vạch (Barcode symbology). Ký mã vạch hay gọi tắt cũng là mã vạch, là 1 ký hiệu tổ hợp các khoảng trắng và vạch thẳng để biểu diễn các mẫu tự, ký hiệu và các con số. Sự thay đổi trong độ rộng của vạch và khoảng trắng biểu diễn thông tin số hay chữ số dưới dạng mà máy có thể đọc được.

19 Là một công nghệ nhận dạng tự động, cho phép thu thập dữ liệu một cách nhanh chóng và chính xác. Một số loại phổ biến: UPC, Code 39, Code 128, EAN-8, EAN-13. Hình ảnh Barcode 1.2 Giới thiệu về QR code QR code (Quick Respond Code) là một dạng mã hai chiều, có thể lưu trữ nhiều loại kí tự khác nhau (số, ký tự, đường dẫn liên kết,.), phổ biến nhất của mã QR code là chuẩn ISO18004. QR code có nhiều ưu điểm vượt trội hơn so với Barcode có khả năng lưu trữ được lượn dữ liệu lớn, khả năng tự sửa lỗi.

Được sử dụng trong nhiều lĩnh vực: - Nhận dạng và xác thực người dùng thẻ ID - Theo dõi các mặt hàng (Quản lý hàng hóa) - Chia sẻ thông tin thanh toán (Gpay, Paytm) - Chia sẻ liên kết, hình ảnh, phương tiện. Hình ảnh mã QR code 21 CHƯƠNG 2: TRIỂN KHAI THUẬT TOÁN VÀ TẠO GIAO DIỆN TKINTER 2.1 Thuật toán chương trình 2.1 Sơ đồ hoạt động chương trình Hình 2. Lưu đồ thuật toán hệ thống 2.2 Tạo giao diện Tkinter  Code tạo giao diện N1 = Label(Nam, text="",bg="white",padx=210,pady=5,relief='solid') #khung chữ thứ nhất 22 N1.place(x=375,y=180) # vị trí của khung chữ thứ nhất N2 = Label(Nam, text="",bg="white",padx=210,pady=8,relief='solid') #khung chữ thứ hai N2.place(x=375,y=330) # vị trí của khung chữ thứ hai N3 = Label(Nam, text="",bg="white",padx=210,pady=45,relief='solid')#khung chữ thứ Ba N3.place(x=375,y=215) # vị trí của khung chữ thứ Ba N4 = Label(Nam, text="",bg="white",padx=400,pady=106,relief='solid') #khung chữ thứ hai N4.place(x=6,y=370) # vị trí của khung chữ thứ hai NTT = ImageTk.open("D:\\GiaoDien\\LG80.jpg")) #khung ảnh Nguyễn Tất Thành TNTT = Label(image=NTT) TNTT.place(x=50,y=0) # vị trí của khung ảnh TieuDe = Label(Nam, text="Phân Loại Hàng Hóa Tự Động Bằng Quét Mã",font=("bold",20),fg='red') #khung chữ tiêu đề TieuDe.place(x=380, y=70) TV1=Label(Nam, text="1. Huỳnh Hoài Nam 1900005832",font=("Arial",10)) TV1.place(x=390, y=90) TV2=Label(Nam, text="2.

Nguyễn Văn Đồng 1900006916",font=("Arial",10)) TV2.place(x=390, y=110) TV3=Label(Nam, text="3. Trần Quốc Bảo 1900006121",font=("Arial",10)) TV3.place(x=380, y=155) GVHD1=Label(Nam, text="T.s Trần Quang Huy",font=("Arial",12)) GVHD1.place(x=550, y=155) MaVach = Label(Nam, text="Mã Vạch:",font=("Arial",12),bg="white") #khung chữ mã vạch 23 MaVach.place(x=380, y=182)#vị trí của khung mã vạch HienMV = Label(Nam, text="",fg= "red",font=("Arial",12),bg="white") #Khung hiện mã vạch HienMV.place(x=730,y=290)  Kết quả chạy Hình 2. Giao diện Tkinter CHƯƠNG 3: CHẠY CHƯƠNG TRÌNH 3. Mô tả bài toán Đọc mã vạch từng thông tin sản phẩm : 25 - Nếu thông tin mã vạch được lưu thì đèn led màu xanh và máy tính xuất giọng “Xác nhận” - Nếu chưa có thông tin thì đèn led màu đỏ và máy tính xuất giọng “Chưa xác nhận” 3.2 Yêu cầu - Thông tin sản phẩm mã vạch phải được lưu trong file excel - Nếu thêm hay xóa mã vạch trên giao diện Tkinter thì dữ liệu trong excel phải đồng bộ với thông tin trên giao diện 3.3 Chạy chương trình 3.1 Code nhận diện mã Barcode và QR code while True: NTN = date.today() #ngày tháng HTNTN = NTN.localtime() #phút giây t = time.strftime("%H:%M:%S", t) img = Hinh.read()[1] img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) for barcode in decode(img): #nhận diện mã vạch print(barcode.data) MV = barcode.place(x=775, y=184) pts = np.int32) pts = pts.polylines(img, [pts], True, (255, 0, 255), 5) pts2 = barcode.FONT_HERSHEY_SIMPLEX,0.5) if MV in Ghi: GN.say("Mã Sản Phẩm Là:" + MV) else: GN.say("Sản Phẩm Chưa Được Thêm") Xnc = Thread(target=XNC)  Kết quả chạy Hình 3.

Hình đọc mã vạch đã lưu 3.2 Code Trợ lý ảo def TL(): #khởi chạy trợ lý ảo robot = "" while True: Noi = speech_recognition.Recognizer() with speech_recognition.Microphone() as mic: print(".listen(mic)#thu giọng nói 27 try: Ban = Noi.recognize_google(Tieng, language="vi") #lăng nghe bằng tiếng việt except: Ban = "" if Ban == "": robot = "" elif "Xin chào" in Ban: robot = "Xin Chào Bạn" elif "hôm nay" in Ban: homnay = date.today() robot = homnay.strftime("%d %B %Y") elif "gian" in Ban: ThoiGian = datetime.now() robot = ThoiGian.strftime("%H : %M : %S") elif "Google" in Ban: wb.open("https://www.vn/?hl=vi") robot = ("đang mở Google") elif "đóng" in Ban: robot = ("đang đóng lại") print("Trợ Lý: " + robot) GN.say("Đã đóng") break elif "YouTube" in Ban: robot="Đang mở" wb.open("https://www.com/") elif "bạn là ai" in Ban: robot ="Tôi tên là kim giang là trợ lý ảo của bạn" elif "xoá dữ liệu" in Ban: robot ="Bạn muốn xóa dòng nào" print("Bạn: " + Ban) print("Trợ Lý: " + robot) GN.place(x=745,y=333)  Kết quả chạy 28 Hình 3. Hình ảnh trợ lý giọng nói 3.3 File Excel lưu trữ thông tin code 29 Hình 3. Hình ảnh file Excel 3.4 Kết quả tổng quan chương trình - Đầu tiên ta đưa mã QR hoặc Barcode lên cho camera quét: + Nếu chưa có mã vạch được lưu thì sẽ hiện “Chưa xác nhận” và laptop xuất giọng nói “Chưa thêm sản phẩm” 30 Hình 3. Hình ảnh đọc mã QR code mới - Sau đó ta nhập thông tin mã CODE hiển thị trên label: Hình 3.

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