1. Trang chủ
  2. » Luận Văn - Báo Cáo

đồ án trí tuệ nhân tạo đề tài phân loại hàng hóa bằng đọc mã vạch 2

44 1 0
Tài liệu được quét OCR, nội dung có thể không chính xác
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

Tiêu đề Phân loại hàng hóa bằng đọc mã vạch
Tác giả Trần Quốc Bảo, Nguyễn Văn Đồng, Huỳnh Hoài Nam
Người hướng dẫn TS. Trần Quang Huy
Trường học Trường Đại học Nguyễn Tất Thành
Chuyên ngành Công nghệ Kỹ thuật Cơ điện tử
Thể loại Đồ án
Năm xuất bản 2022
Thành phố Tp.HCM
Định dạng
Số trang 44
Dung lượng 6,35 MB

Nội dung

Công nghệ nhận dạng là một trong các công nghệ đã và đang được áp dụng cho các thiết bị di động hiện nay.. Trên thế giới có rất nhiều tập đoàn đa Quốc gia, các doanh nghiệp có nhiều nhà

DANH MUC TU VIET TAT

Al Artificial Intelligence OpenCV Open Source Computer Vision Library QR Code Quick response code

PHAN MO DAUĐặt vấn đề

Hàng hóa là những sản phẩm lao động, thông qua trao đôi, mua bán có thê thỏa mãn một số nhu cầu nhất định của con người Hàng hóa có thê đáp ứng nhu cầu cá nhân hoặc nhu cầu sản xuất Việc phân loại hàng hóa là yếu tố quan trọng để xác định đặc điểm, thành phân, cầu tạo, quy cách đóng gói nhằm phân loại tên gọi, mã số của hàng hóa theo quy trình sản xuất và tô chức sắp xếp 1 cách thông minh

Trên thế giới có rất nhiều tập đoàn đa Quốc gia, các doanh nghiệp có nhiều nhà máy phân loại thông minh sử dụng những công nghệ, phần mềm và các thiết bị máy móc hiện đại dé sắp xếp và cũng như phân loại hàng hóa theo từng danh mục khác nhau Điều này đễ dàng trong việc quản lý các hàng hóa lớn nhỏ I cách nhanh chóng Tại Việt Nam có nhiều công ty thiết kế hệ thong dây chuyền phân loại hàng hóa cho các doanh nghiệp lớn, đặc biệt trong chuỗi cung ứng Logistics tăng hiệu suất công việc lên đến 80% Qua đó giúp nâng cao chất lượng, hiệu quả dịch vụ và chuỗi cung ứng, giảm chi phí, nâng cao năng lực cạnh tranh

Những năm trở lại gần đây, trí thông minh nhân tạo AI, cụ thê hơn là Machine Learning va Deep Learning dang ndi lên là bằng chứng cho cuộc công nghệ cách mạng công nghiệp 4.0 Vận dụng từ những gì chủng em đã được học Trí tuệ nhân tạo và Xử lý ánh cho đề tài này là phân loại hàng hóa bằng quét mã

Giảm thiểu sai sót > Tự độnghóa }

Phân loại tự động làm giảm sai Chuyén dich dan cơ cầu sdt do nhân từ con người nhắn lực tử thủ công sang

= phan loại bảng máy móc

, — , Rut ngan thời gian Team) phản loại dẫn đền day nhanh quả trinh giao hang

Thiết kế modul, dễ dàng tháo lắp, sửa chữa và thay thế

“km Kết nếi e ° `“ \ ‹ Giao diện vận hành

Các dữ liệu đượe gửi nên hệ thông 5 = đơn giản máy chủ giúp việc quản lý dữ liệu có thể thực hiện ở bắt ky noi đâu có kết nối Internet

Năng suất › Ứng dụng công nghệ hiện đại giúp nâng cao nắng suất

Nguồn tham khao: https://intech-group.vn/he-thong-phan-loai.htm

Nghiên cứu và tìm hiểu các phương pháp nhận diện, áp dụng vào quét mã vạch, xây dựng chương trình

Chương trình xây dựng giúp cho việc tô chức quán lý 1 cách tiện lợi đem lại năng suât cao cho chuỗi cung ứng LogIstics nói riêng và các lĩnh vực quản lý tự động hóa nói chung

3 Phương pháp nghiên cứu Phương pháp tài liệu: e _ Tìm hiểu lập trình Python và cơ sở lý thuyết về thuật toán CNN e_ Tìm hiểu các phương pháp nhận dạng biển báo giao thông e_ Tìm hiệu và lựa chọn công cụ hô trợ

Phương pháp thực nghiệm: e_ Xây dựng chương trình thực nghiệm 4 Phạm vỉ nghiên cứu

Dữ liệu xử lý là thu thap cdc ma Barcode, QReode bang cach tao ra tir Python

5 Nội dung nghiên cứu e©_ Tìm hiểu các kĩ thuật xử lý ảnh trong nhận diện hình học e_ Xây dựng hệ thông nhận diện các biển báo khác nhau e Céng cụ thực hiện: Pycharm e Ngôn ngữ: Python 6 Cấu trúc báo cáo

Báo cáo “ Phân loại hàng hóa bằng quét mã vạch ” bao gồm tất cả 3 phần

Chương I— Tổng quan: Giới thiệu về các kiến thức nền tảng cũng như công nghệ và phần mềm được sử dụng trong để tài bao gồm kiến thức về xử lý ảnh, thư viện xử lý ảnh OpenCV

Chương II — Triền khai thuật toán và tạo giao diện Tkinter: Trinh bay tong quan về mã vạch , phương pháp đề xuất và từ đó triển khai thuật toán xây dựng đề giái quyết bài toán nhận diện mã vạch

Chương III — Chạy chương trình: Từ phương pháp và thuật toán đã tìm hiểu, xây dựng một chương trình để nhận dạng đưa ra đầu ra cho bài toán cần giải quyết

> Phần Kết luận — Dánh giá kết quả và kết luận: Tông kết quá trình thực hiện và rút ra hướng phát triển sau này

Chuong 1: Tong Quan

1.1 Một số khái niệm cơ bản 1.1.1 Trí tuệ nhân tạo

Trí tuệ nhân tạo AT 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ơ nay van 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 tỉnh 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.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)

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

OpenCV (Open Computer Vision) la mét thu vién ma nguén mo hang dau cho xtr ly vé thi giác máy tính, machine learning, xu ly anh OpenCV duoc viet bang C/C++, vi 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 vi vay hé tro duoc 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 thu vién OpenCV:

Thư viện OpenCV bao gồm một số tính năng nổi bật như: e© Bộ công cụ hỗ trợ 2D và 3D e _ Nhận diện khuôn mặt e Nhận diện cử chỉ e_ Nhận dạng chuyên động, đối tượng, hành vi, e Tuong tac gitta con nguoi va may tinh e_ Diều khiến Robot e H6 tro thực tế tăng cường 1.1.4 Tkinter

Là một gói trong Python có chứa module 7k hỗ trợ cho việc lập trình giao diện (GUI) 7k ban đầu được viết bằng ngôn ngữ Tel Sau đó Tkinter được viết ra để sử dụng Tk bằng trình thông địch Tel 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

1.1.5 Zbar Đề giai ma Barcode va QR code ta sử dung thư viện Zbar là | thư viện da 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ễ đà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 cai thu viện Zbar trong python: pip install pyzbar video scur= stoic nage source "duet" vere sẵe:re:e zil| oc

+, (pont nes icon] [anit ee "| mage tear “gi imeraly sas ale etree

Attps://sites google.com/site/embedded247/npcourse/impcourse/barcode_qrcode

Hình 1.1 Mô hình hệ thống của Zbar

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 a (4x3 be resull (4x 3) ololo 011.2 EIERRE

1.1.7 pyttsx3 la thư viện chuyển đổi văn bản thành giọng nói 1.1.8 Date time

Thư viện datetime trong python được chia làm 4 lớp chính:

- Date —- Chỉ ngày, tháng, năm - Time — Chi thoi gian trong ngày (Giờ, phút, giây, micro giây) - Datetime — Két hop thoi gian va ngày (Ngày, tháng, năm, giờ, phút, giây, micro giay)

- Timedelta — Ding dé tinh todn thoi gian trong quá khứ và tương lai 1.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.1.10 webbrowser là thư viện mở đường link trang web trong python 1.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 đễ đà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 đữ liệu trong file excel dưới dạng cột và dòng

1.1.12 speech_recognidion là thư viện nhận dạng giọng nói trong Python 1.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.1.14 Workbook là thư viện đọc toàn bộ fle Excel

1.2 Tổng quan về Barcode và QR code 1.2.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 la ky ma vach (Barcode symbology) Ky ma vach 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

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

1.2.2 Giới thiệu về QR code

GIAO DIEN TKINTERCHUONG 3: CHAY CHUONG TRINH

3.1 Mô tả bài toán Đọc mã vạch từng thông tin sản phẩm :

- 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 ủle excel

- Nếu thêm hay xóa mã vạch trên giao diện Tkinter thì đữ 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.3.1 Code nhận điện mã Barcode và QR code while True:

NTN = date.todayQ #ngay thang HTNTN = NTN strftime("%d %B %Y") t = time.localtime(Q) #phút giây t = time.strftime("%H:%M:%S", t) img = Hinh.-readO[1] img = cv2.cvtColor(img, cv2.- COLOR_BGR2RGB) for barcode in decode(img): #nhan diện mã vạch print(barcode.data) MV = barcode.data.decode(‘utf-8') print(Mv) if MV in Ghi:

XN ='Xac Nhan' MXN=Label(Nam, text=" ", bg=”green”, padx=l, pady=1 ,relief='solid’) MXN.place(xw5, y=l84) else:

XN= 'Chua Xac Nhan' MXN = Label(Nam, text=""_", bg="red", padx=1, pady=1 ,relief='solid’)

MXN place(xw5, y4) pts = np.array([barcode.polygon], np.int32) pts = pts.reshape((-1, 1, 2)) cv2.polylines(img, [pts], True, (255, 0, 255), 5) pts2 = barcode.rect cv2.putText(img, XN,(pts2[0],pts2[1]),cv2.FONT_HERSHEY_SIMPLEX,0.9,(255,0,255),2)

HienMV.configure(text=MV) def XNCQ: time.sleep(0.5) if MV in Ghi:

GN.say("Ma San Pham La:” + MV) else:

GN.say("San Phâm Chưa Được Thêm") Xne = Thread(target=XNC)

8 Phân Loại Hàng Hóa Tự Động Bằng Quét Mã

1 Huỳnh Hoài Nam 1900005832 2 Nguyén Van Béng 1900006916 3 Tran Quéc Bao 1900006121 Giáo Viên Hướng Dẫn: T.s Trần Quang Huy

[Maãvac — oAw4rreL Bl sit Mã Vạch Tên Sản Phim Khu Vực

Thém San Phẩm] Số Dông| ] Cập Nhật

| 23:01:55 17 October 2022 iD Mã Sản Phẩm Tên Sản Phẩm Khu Vực

1 GAW4LTGL Huynh Hoai Nam HCM

Hinh 3.1 Hình đọc mã vạch đã lưu

3.3.2 Code Trợ lý ảo def TQ: #khoi chay tro ly ao robot = "" while True:

Noi = speech_recognition.Recognizer() with speech_recognition.Microphone() as mic: printc" ") Tieng = Noi.listen(mic)#thu giong noi try:

Ban = Noi.recognize_google(Tieng, language="vi") #lang nghe bang tiéng viét except:

Ban="" if Ban ==": robot = "” elif "Xin chao" in Ban: robot = "Xin Chao Bạn” elif "hôm nay" in Ban: homnay = date.todayQ 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.google.com.vn/?hl=vi" robot = ("dang mo Google") elif "dong" in Ban: robot = ("dang dong lai") print("Tro Ly: " + robot) GN.say('Đã đóng”) break elif "YouTube" in Ban: robot="Dang mo" wb.open(‘“https://www.youtube.com/") elif "ban la 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” prIinf( “Bạn: ” + Ban) prin((C “Trợ Lý: ” + robot) GN.say(robot) GN.runAndWait()

TroLy=Button(Nam,text="Tro Ly" ,command=TL,font=("' Arial" ,10),relief='solid',fg='red' ,bg=" white") TroLy.place(xt5,y33)

1 Phan Loai Hang Hoa Ty Bong Bang Quet Ma

Thành Viên Nhóm: ÿnh Hoài Nam — 1900005832 2 Nguyễn Văn Đẳng — 1900006916 3 Trằn Quốc Bảo 1909006121 Giáo Viên Hướng Dẫn T.s Trần Quang Huy

Hình 3.2 Hình ảnh trợ lý giọng nói

3.3.3 File Excel lưu trữ thông tin code

HU dat Page Layout Formulas Data

Deer View x lui Conditional Formatting ~

8 (Glibri “100 +) = = Se General inet ~ LD ~ ore Fa- BIU-~ AK ===E\- $ -% * G®Formatas Tabley ®XDelete ~ [¥]~ Ð~

Paste ~ © ` ữj- h- A- rn 2 8 [4 Cell styles ~ tos {ElFormaty @#~

Clipboard ta Font ti Alignment =) Number œ styles Cells Editing ^

1 ID Mã Sản Phẩm Tên Sản Phẩm Khu Vực

Hình 3.3 Hình ảnh file Excel 3.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”

@ Phân Loại Hàng Hóa Tự Động Bằng Quét Mã

1 Huỳnh HoaiNam 1900006832 2 Nguyễn Văn Đổng 1900006915 3 Trằn Quốc Bảo 1900006121 Giáo Viên Hướng Dẫn: T.s Trần Quang Huy

[Mã vạch GAW4LTGL BỊ

STT Mã Vạch Tén San Phim Khu Vue

ID Mã Sản Phẩm Tên Sản Phẩm

Hình 3.4 Hình ảnh đọc mã QR code mới Khu Vực Sau đó ta nhập thông tin mã CODE hiển thị trên label:

@ Phân Loại Hàng Hóa Tự Động Bằng Quét Mã

== | Thành Viên Nhóm: r) | 41 Huynh Hoai Nam 1900005832

3 Tran Quốc Bão 1900006121 Giáo Viên Hướng Dẫn: T s Trần Quang Huy

STT Mã Vạch Tên Sản Phẩm Khu Vực

Thêm Sản Phẩm Số Dàng [_——]

ID Mã Sản Phẩm Ten San Pham Khu Vực

Hình 3.5 Hình ảnh nhập thông tin mã vạch

Sau khi nhan “Thém san pham” théng tin được lưu vào Eile Excel: Nếu đã lưu mã vạch thì khi đưa qua camera đề quét thì hiện” Đã xác nhận” và laptop xuất giọng noi “Ma san pham 1a + Thông tin mã” nth

1 Huỳnh Hoài Nam 1900005832 2 Nguyễn VănĐổng 1900006916 3 Trần Quốc Bão 1900006121 Giáo Viên Hướng Dẫn: T.s Trần Quang Huy

[Mã vạch: GAW4LTGL BỊ

STT Mã Vạch Tên Sản Phẩm Khu Vực

6 Phân Loại Hàng Hóa Tự Động Bằng Quét Mã

Mã Sản Phẩm Tên Sản Phẩm

GAW4LTGL Huynh Hoai Nam

Hình 3.6 Hình ảnh đọc lại mã vạch đã lưu

- _ Nếu chưa có nhập thông tin sán phâm mà bắm nút thêm sản phẩm thì sẽ hiện lên cảnh báo MessengerBox “Bạn chưa nhập đủ dữ liệu”

1 Huỳnh Hoài Nam 1900005832 2 Nguyễn VănĐổng 1900006916 3 Trằn Quốc Bão 1900006121 Giáo Viên Hướng Dẫn: T.s Trần Quang Huy

STT Mã Vạch Tên Sản Phẩm Khu Vực

II wv Ban Chưa Nhập Đủ Dữ Liệu 23 October 2022 Iœm J

ID Ma Sant Khu Vực

Hình 3.7 Hình ảnh cảnh báo chưa nhập Nếu ta nhắn nút xóa đòng 1 thì sẽ hiện lên Box cánh báo, bởi vì đây là dòng hiển thị ID, mã vạch, tên sản phâm và khu vực Đề xóa được ta phái nhập số dòng tương ứng nếu không nhập thì sẽ không có gì xay ra

@ Phan Loai Hàng Hóa Tự Động Bằng Quét Mã

1 Huỳnh Hoài Nam — 1900005832 2 Nguyễn Văn Đổng 1900006916

3 Trằn Quốc Bão 1900006121 Giáo Viên Hướng Dẫn: T.s Trần Quang Huy

| STT Mã Vạch Tên Săn Phẩm Khu Vực

Số Dòng [_—][22] [cap nat oa Ban không thể xóa dong số 1

17 October 2022 lần Phẩm Khu Vực

Hình 3.8 Hình ánh cảnh báo xóa dòng thông tin sản phẩm

KET LUAN

Trong quá trình tim hiểu nhóm đã gặp phái một sô khó khăn nhất định Nhưng với sự đam mê và sự hướng dẫn nhiệt tình của thầy giáo cộng thêm nỗ lực tìm tòi, đam mê khám phá cái mới đã giúp nhóm đạt được một số kết quả sau:

- _ Tổng quan về thư viện cần thiết cho đề tài

- _ Đã tạo được giao diện TkInter

- _ Tiên hành chạy thực tế và đạt được kết quả

- - Chưa truy xuất được đữ liệu từ mã vạch 1 cách trực tiếp - _ Trợ lý giọng nói chưa truy cập vào trong file excel và còn bị hạn chế chưa can thiệp vào hệ thông Hướng phát triển:

- Phát triển phần mềm đọc mã vạch mà bất cứ ai cũng có thê sử dụng được, chỉ cần tái về và đăng nhập

- _ Quét mã vạch hiên thị đầy đủ các thông tin sản phẩm lên phần mềm, sau đó tự động lưu vào thư mục do chính phần mềm đó tạo ra không bị phụ thuộc vào Excel, người dựng cú thờ chớnh sửa trực tiếp trong ủle đú

- _ Sử dụng trợ lý giọng nói có thể điều khiển thêm hoặc xóa các mã vạch sản phâm và đồng bộ với thư mục đề lưu thông tin

TAI LIEU THAM KHAO

1 www.google.com 2 www.youtube.com

PHU LUC CODE HOAT DONG

from tkinter import * # Thu tao giao dién import cv2 # Thu vién su ly anh import numpy as np # Thu vién khai bao mang from PIL import Image,ImageTk # Thu vién lay hinh anh from pyzbar.pyzbar import decode #Thu vién dé doc ma QR va Barcode import pyttsx3 # Thu vién giong nói from datetime import date ,datetime #Thu vién dé lay thoi gian import time # Thu vién thoi gian from tkinter import ttk # Thu viện tạo giao diện import speech_recognition # ‘Thu vién thu giong noi from threading import Thread #Thu vién phan luong import webbrowser as wb #Thu vién mo dudng link import pandas as pd # Thu vién cau tric bang đa chiều import pathlib # Thư viện đường dẫn from openpyxl import Workbook # mo excel import openpyxI,xlrd # mở excel from openpyxl import load_workbook #mo excel from tkinter import messagebox

Nam = TkQ #code gọi tkimfer Nam.tifle(Đô An Trí Tuệ Nhân Tạo) #đặt tên cho khung giao diện Nam.geometry( 800x610”) # kích thước khung

Nam.resizable(widthse, heiphtse) #khóa khung Nam.iconbitmap("D:\\GiaoDien\\education.ico") #icon cho giao diện thứ TLN = speech_recognition.RecognizerQ#khoi dong giong noi

Hinh=cv2.VideoCapture(0) Hinh.set(3,200)

GN =pyttsx3.initQ) #khởi tạo tiếng nói của máy tính voices = ỚN.getProperty(voIces”)

GN.setProperty("voice” voices[1].id) #setup giong cho may tinh TocDoDoc=GN getProperty(‘rate’) # t6c độ đọc của máy tính chậm GN.setProperty(rate',TocDoDoc - 80) #giám tốc độ đọc của giộng nói xuống 80 N1 = Label(Nam, text="",bg="white" padx=2 1 0,pady=5,relief='solid’) #khung chữ thứ nhat

N1.place(x75,y0) # vi trí của khung chữ thứ nhất

N2 = Label(Nam, text="",bg="white" padx=2 | 0,pady=8 ,relief='solid’) #khung chữ thứ hai

N2.place(x75,y30) # vị trí của khung chữ thứ hai

N3 = Label(Nam, text="",bg="white" padx=2 | 0,padyE,relief='solid))#khung chtr thir Ba

N3.place(x75,y!5) # vi tri cua khung chữ thứ Ba

N4 = Label(Nam, text="",bg="white" padx@0,pady6,relief='solid’) #khung chữ thir hai

N4.place(x=6, y70) # vi tri cua khung chtr thir hai

NTT = ImageTk.PhotoImage(Image.open("D:\\GiaoDien\\_LG80.jpg")) #khung anh Nguyễn Tắt Thành

TNTT = LabelGimage=NTT) TNTT.place(xP,y=0) # vi tri cua khung anh TieuDe = Label(Nam, text="Phan Loại Hàng Hóa Tự Động Bang Quét Mã",font=( bold”,20),fg=red #khung chữ tiêu đề

TieuDe.place(x0, y) #vi tri khung chữ tiêu đề

TVN=Label(Nam, text="Thanh Vién Nhom:",font=(" Arial" ,12),fg='red’) TVN.place(x80, yp)

TV1=Label(Nam, text="1 Huynh Hoai Nam 1900005832", font=(" Arial", 10)) TV 1.place(x90, y)

TV2=Label(Nam, text="2 Nguyễn Văn Đồng 1900006916”,font=('Arial",10)) TV2.place(x90, y0)

TV3=Label(Nam, text="3 Trần Quốc Bảo 1900006121”,font=('Arial",10)) TV3.place(x90, y0)

GVHD=Label(Nam, text="Giao Vién Huong Dan:",font=(" Arial", 12),fg='red’) GVHD.place(x80, y5)

GVHD 1=Label(Nam, text="T.s Tran Quang Huy",font=(" Arial",12)) GVHDI.place(xU0, y=l55)

MaVach = Label(Nam, text="Ma Vach:",font=(’ Arial", 12),bg="white") #khung chit ma vach

MaVach.place(x80, y2)#vi tri cua khung ma vach

HienMV = Label(Nam, text="",fg= "red" ,font=("Arial",12),bg="white") #Khung hiện ma vach

HienMV place(xP0, y2)#vi tri cua khung hiện mã vạch

HNT = Label(Nam, text="",font=("Arial" ,12),bg="white") HNT.place(x`0,y35)

TG = Label(Nam, text="",font=(" Arial", 12),bg="white") TG.place(x80,y35)

L1 = Label(Nam,relief='solid’) LI.place(x=7,yp)

STT = Label(Nam,text="STT" ,font=(" Arial", 10),bg="Wwhite") STT-place(x = 382, y"0)

SoMV = Label(Nam,text="Ma Vach",font=(" Arial", 10),bg="white") SoMV.place(x = 450, y"0)

TenSP = Label(Nam,text="Tén San Phẩm",font=('Arial",10),bg="white") TenSP.place(x = 560, y"0)

KhuVuc = Label(Nam,text="Khu Vyc",font=("Arial" ,10),bg="white") KhuVuc.place(x = 700, y"0)

KhungSTT = Entry(Nam, width=5,relief='solid’) KhungSTT.place(x80,y$0)

KhungSoMV = Entry(Nam, width ,relief='solid’) KhungSoMV.place(xB0, y$0)

KhungTenSP = Entry(Nam, width ,relief='solid’) KhungTenSP.place(xU0,y$0)

KhungKhuVuc = Entry(Nam, width ,relief='solid’) KhungKhu Vuc.place(xh0, y$0)

MXN = Label(Nam, text=" ", bg="white", padx=1, pady=1, relief='solid’)

MXN place(xw5, y4) file = pathlib.Path(”Lri TueNhanTao.xlsx”) if file.existsQ: pass else: file=WorkbookQ) sheet=file.active sheet["A1"]="ID" sheet["B1"]="Ma San Pham" sheet["C1"]="Tên Sản Phẩm" sheet["D1"]="Khu Vuc" file.save("TriTueNhanTao.xlsx") def submit(): y=KhungSTT.getQ) z=KhungSoMV.get() z1=KhungTenSP getQ) yl=KhungKhuVuc.getQ if y=="" or z=="" or z1=="" or yl= messagebox.showinfo("Canh Bao","Ban Chua Nhap Du Dtr Liéu") else: fie=openpyxLload_ workbook( "Trí TueNhan Tao.xlsx") sheet=file.active sheet.cell(column=Í,row=sheet.max_row+ẽ ,value=y) sheet.cell(column=2,row=sheet.max_row,value=z) sheet.cell(column=3,row=sheet.max_row,value=zl) sheet.cell(column=4,row=sheet.max_row, value=y 1) file.save("TriTueNhanTao.xIsx") we HH, file_openQ KhungSTT.delete(O, END) KhungSoMV.delete(O, END) KhungTenSP.delete(O, END) KhungKhuVuc.delete(0, END) my_frame =Frame(Nam) my_frame.place(x=7, y72)

M =ttk.Treeview(my_frame) def file_openQ: filename= pathlib.Path('TriTueNhanTao.xlsx") if filename: try: filename=r" { }" format(filename) df=pd.read_excel(filename) except ValueError: my_label.config(text="File Couldn't Be Open") except FileNotFoundError: my_label.config(text="File Couldn't Be Found") clear_tree()

M["column"] =list(df.columns) M["show"] ="headings" for column in M["column"]:

M.heading(column,text=column) df_rows = df.to_numpy().tolistO for row in df_rows:

M.insert(”","end”,values=row) M.packQ wb=load_workbook("TriTueNhanTao.xIsx") ws=wb.active column_b = ws["B"] for cell in column_b: global Ghi Ghi = cell value def clear_treeQ:

M.delete(*M.get_childrenQ) my_label=Label(Nam,text=""") my_label.place(x=1,y=1)

# def chonQ: selected = M.s for item in selected:

Na = M.item(item) Nal = Na.get("values") print(Nal[1], Nal[2]) se oH tk He HE def XoaDLOQ: filel = openpyxl.load_workbook("TriTueNhanTao.xlsx") sheet] = filel.active s = int(KhungXoa.getQ) ifs !=1: sheet1.delete_rows(idx=s,amount=1) filel.save("TriTueNhanTao.xlsx") file_openQ elif s == 1: messagebox.showinfo("Cảnh Báo","Bạn không thê xóa dòng số 1") KhungXoa.delete(0, END)

Them=Button(Nam, text=""Them San Pham" ,command=submit,font=("Arial" ,10),relief='solid',fg='green',bg=" white") Them.place(x80,y)0)

TenXoa = Label(Nam,text="S6 Dong:" font=("Arial",10),bg=" white") TenXoa.place(x = 520, y)3)

KhungXoa = Entry(Nam, width=5,relief='solid’,) KhungXoa.place(x=5 80, y)5)

Xoa=Button(Nam,text="X6a" ,ommand=XoaDL,font=("Arial", 10),relief='solid',fg='gre en',bg="white")

Upload=Button(Nam,text="Cap Nhat",command=file_open,font=("'Arial", 1 0),relief='solid’,fg='green',bg=" white") Upload.place(xs0, y)0) file_openO def TLQ: #khoi chay tro ly ao robot = "" while True:

Noi = speech_recognition.Recognizer() with speech_recognition.Microphone() as mic: printc" ") Tieng = Noi.listen(mic)#thu giong nói try:

Ban = Noi.recognize_google(Tieng, language="vi") #lăng nghe bằng tiếng việt except:

Ban="" if Ban ==": robot = "” elif "Xin chao" in Ban: robot = "Xin Chao Ban” elif "hôm nay" in Ban: homnay = date.todayQ robot = homnay.strftime('%d %B %Y") elif "gian" in Ban:

ThoiGian = datetime.nowQ robot = ThoiGian.strftime("%H : %M : %S") elif "Google" in Ban: wb.open(“https://www.google.com.vn/?hl=vi" robot = ("dang mo Google") elif "dong" in Ban: robot = ("dang dong lai”) print('Tro Ly: " + robot) GN.say('Đã đóng”) break elif "YouTube" in Ban: robot="Dang mo" wb.open(“https://www.youtube.com/") elif "ban là ai" in Ban: robot =” Tôi tên là kim giang là trợ ly ảo của bạn” elif "xoá dữ liệu” in Ban: robot ="Bạn muốn xóa dòng nào” print("Ban: " + Ban) prin((C “Trợ Lý: ” + robot) GN.say(robot) GN.runAndWaitQ)

TroLy=Button(Nam,text="Tro Ly" ,command=TL,font=("' Arial" ,10),relief='solid',fg='red' ,bg=" white") TroLy.place(xt5,y33) while True:

NTN = date.todayQ #ngay thang HTNTN = NTN: strftime("%d %B %Y") t = time.localtimeQ #phút giây t = time.strftime("%H:%M:%S", t)

1mg = Hinh.readO|[ I | 1mg = cv2.cvtColor(mg, cv2.COLOR_BGR2RGB) for barcode in decode(img): #nhan dién ma vach print(barcode.data) MV = barcode.data.decode(‘utf-8') print(Mv) if MV in Ghi:

XN = 'Xac Nhan' MXN = Label(Nam, text=" ", bg=”green”, padx=l, pady=[l,relief= solid) MXN.place(xw5, y=l84) else:

XN = 'Chua Xac Nhan' MXN = Label(Nam, text=" _", bg="red", padx=1, pady=1 ,relief='solid’) MXN place(xw5, y4) pts = np.array([barcode.polygon], np.int32) pts = pts.reshape((-1, 1, 2)) cv2.polylines(img, [pts], True, (255, 0, 255), 5) pts2 = barcode.rect cv2.putText(img, XN,(pts2[0],pts2[1]),cv2.FONT_HERSHEY_SIMPLEX,0.9,(255,0,255),2)

HienMV.configure(text=MV) def XNCQ: time.sleep(0.5) if MV in Ghi:

GN.say( Mã Sản Phâm La:" + MV) else:

GN.say("San Phâm Chưa Được Thêm") Xne = Thread(target=XNC)

HNT.configure(text=HTNTN) TG.configure(text=t) img = ImageTk.PhotoImage(Image.fromarray(img)) L1[‘image'] = img

Ngày đăng: 06/09/2024, 16:52

w