TRANG 2 PHẦN MỀM ỨNG DỤNG XỬ LÝ ẢNH VÀ QR CODE ĐIỂM DANH NHÂN VIÊN QUA NGÔN NGỮ PYTHON CODE CUỐI TRANG MỤC LỤC DANH MỤC HÌNH VẼ 0 CHƯƠNG 1 TỔNG QUAN ĐỀ TÀI 1 1 1 Lý do chọn đề tài 1 1 2 Mục tiêu nghiên cứu 1 1 3 Đối tượng nghiên cứu 1 1 4 Phạm vi nghiên cứu 2 1 5 Dự kiến kết quả 2 CHƯƠNG 2 CỞ SỞ LÝ THUYẾT 3 2 1 Python và IDE Pycharm 3 2 2 Thư viện Open CV 3 2 3 Thư viện xử lý ảnh đa luồng Tkinter 4 CHƯƠNG 3 GIẢI THUẬT VÀ ĐIỀU KHIỂN 6 3 1 Flowchart 6 3 2 Hoạt động của chương trình 7 3 3 Code chươ.
Trang 1PHẦN MỀM ỨNG DỤNG XỬ LÝ ẢNH VÀ
QR CODE ĐIỂM DANH NHÂN VIÊN
QUA NGÔN NGỮ PYTHON
CODE CUỐI TRANG
Trang 2DANH MỤC HÌNH VẼ ……….……….0
CHƯƠNG 1 : TỔNG QUAN ĐỀ TÀI 1
1.1 Lý do chọn đề tài : 1
1.2 Mục tiêu nghiên cứu : 1
1.3 Đối tượng nghiên cứu : 1
1.4 Phạm vi nghiên cứu : 2
1.5 Dự kiến kết quả : 2
CHƯƠNG 2 : CỞ SỞ LÝ THUYẾT 3
2.1 Python và IDE Pycharm : 3
2.2 Thư viện Open-CV : 3
2.3 Thư viện xử lý ảnh đa luồng Tkinter : 4
CHƯƠNG 3 : GIẢI THUẬT VÀ ĐIỀU KHIỂN 6
3.1 Flowchart : 6
3.2 Hoạt động của chương trình : 7
3.3 Code chương trình : 8
3.3.1 Code nhận diện QR code và scan QR code : 8
3.3.2 Code tổng quan để phát hiện xử lý ảnh : 9
3.3.4 Code để nhận diện nhân viên ( check-in ) 10
3.4 Giao diện APP : 12
3.4.1 Giao diện tổng quan : 12
Trang 33.4.2 Giao diện QR Tools : 13
CHƯƠNG 4 : THỰC NGHIỆM 14
4.1 Tạo một file QR Code bất kì bằng QR Tools : 14
4.2 Train model và check in : 15
CHƯƠNG 5 : KẾT LUẬN 17
5.1 Ưu điểm : 17
5,2 Nhược điểm : 17
5.3 Hướng phát triển : 17
TÀI LIỆU THAM KHẢO 18
Trang 4Hình 1 : Khai báo tkinter , tạo một cửa sổ đơn giảnHình 2 : Kết quả thu được
Hình 3 : Flowchart cho QR Tools
Hình 4 : Flowchart cho Check-in điểm danh
Hình 5 : Flowchart cho Exit
Hình 6 : Giao diện tổng quan
Hình 7 : Giao diện QR Tools
Hình 8 : Kết quả thu được
Hình 9 : Nhập ID và Name
Hình 10 : Tệp ảnh samples thu được
Hình 11 : Kết quả nhận được
Trang 6CHƯƠNG 1 : TỔNG QUAN ĐỀ TÀI
1.1Lý do chọn đề tài :
- Năm 2019 , cả thế giới xuất hiện loại virus mang tên Virus Corona Virus này mang đến dịch bệnh và cướp đi hàng triệu sinh mạng cũng như khiến hàng triệu người thất nghiệp , ảnh hưởng nặng nề đến nền kinh tế thế giới và của nước ta Năm 2021 vừa qua là ảnh hưởng nặng nề nhất mà dịch bệnh mang đến nước ta với biến chủng Delta mới Cả nước bị khóa chặt nền kinh tế , nhà nhà có người thân mất , nặng nề đau thương cũng như ảnh hưởng đến nền giáo dục nước nhà ,đối với việc ra trường chậm tiến độ của sinh viên , … Hầu như mọi ngành , mọinghề đều bị ảnh hương nghiêm trọng Cơ chế lây lan của virus corona là tiếp xúc gần giữa mọi người với nhau , qua nước bọt , qua các hành vi chào hỏi hay trò chuyện…Do vậy , nhiều ứng dụng đã ra đời , mục đích để hạn chế tiếp xúc của mọi người với nhau và các vật dụng xung quanh Chính vì thế , em chọn đề tài tạo app điểm danh ứng dụng xử lý ảnh và Qr code qua ngôn ngữ python để phần nào tạo được một ứng dụng có thể áp dụng và giảm bớt đi tình trạng hiện tại
- Không những vậy , ứng dụng nhiều trên ngôn ngữ python giúp ta tiến gần hơn với kiến thức hiện đại của thế giới trên phương diện AI và Machine Learning Tạo tiền đề cho việc tạo những ứng dụng hữu ích hơn sau này
1.2 Mục tiêu nghiên cứu :
- Tạo ra ứng dụng với khả năng tạo và đọc được QR code
- Mục tiêu thứ hai là điểm danh nhân viên ứng dụng thư viện open-cv python Tạo được chương trình gồm có : lấy mẫu ảnh ( samples ) , train ảnh ( cho máy tính học ) và tiến hành check-in ( điểm danh nhân viên )
- Mục tiêu thứ ba là tạo giao diện sử dụng thân thiện với người dùng
1.3 Đối tượng nghiên cứu :
Trang 7TRANG 2
- Python code
- Pycharm IDE dành cho python
- Thư viện Qrcode trên python
- Thư viện dùng để xử lý ảnh và các thao tác liên quan đến ảnh ( opencv , numpy)
- Cuối cùng là tạo giao diện đa luồng với thư viện tkinter cho ra một giao diện thân thiện với người dùng
1.4 Phạm vi nghiên cứu :
- Tạo ra app có thể nhúng được Do sử dụng tkinter nên khi app hoàn thiện ta có thể tìm cách áp dụng giao diện sản phẩm và source code vào các nền tảng nhúngnhư : có thể áp dụng vào các loại robot thông minh , các giao diện với màn HMIhay Raspberry Pi , … để tại những khu vực công cộng mà người dùng không cần trực tiếp chạm
Trang 8CHƯƠNG 2 : CỞ SỞ LÝ THUYẾT
2.1 Python và IDE Pycharm :
- Ngôn ngữ lập trình được chọn để sử dụng trong đề tài là Python Đây là một ngôn ngữ được ra đời vào năm 1980 và được phát hành từ đầu năm 1991 , do Guido Van Rossum tạo nên Python là một ngôn ngữ lập trình hướng đối tượng( OOP ) được sử dụng rộng rãi trong xử lý ảnh , AI và machine learning ( máy học ) hiện nay Ngôn ngữ này thuộc về ngôn ngữ cấp cao , do đó dễ ứng dụng với người dùng Hơn thế , đây là một ngôn ngữ có mã nguồn mở Điều này là điểm mạnh lớn cho python , bởi do có rất nhiều cộng đồng ( community ) hỗ trợcũng như giúp đỡ lẫn nhau Điển hình là Stackoverflow là một cộng đồng mạnh
mẽ chuyên giải quyết và giúp đỡ lẫn nhau cho những vướng mắc mà mọi người gặp phải
- Do tính chất dễ sử dụng và đơn giản , dễ mở rộng mà đây được xem là một ngônngữ mạnh ở thời điểm hiện tại giải quyết hầu hết các vấn đề về website , AI , Machine learning , xử lý ảnh , …
- Pycharm là một IDE mạnh , hỗ trợ rất tốt cho ngôn ngữ Python Do tính chuyênnghiệp , có các vens ( môi trường ảo ) , có bản miễn phí dành cho cộng đồng nên pycharm được hầu hết công ty lớn cũng như trường học ứng dụng cho sinh viên cũng như nhân viên sử dụng
2.2 Thư viện Open-CV :
- Tương tự python , thư viện open-cv cũng có mã nguồn mở Đây là một thư viện
được tạo nên cho việc xử lý ảnh Thư viện hỗ trợ rất tốt cho các vấn đề liên quan đến computer vision ( thị giác máy tính ) cũng như có thể sử dụng GPU tăng tốc cho thời gian thực Real-time khiến việc xử lý ảnh qua camera nhanh hơn và tốt hơn rất nhiều
Trang 9TRANG 4
- Thư viện này hỗ trợ cho rất nhiều ngôn ngữ như : C++ , C# , Python , java , lập
trình android , C++ , ….tùy theo nhu cầu và loại code mà người dùng sử dụng
- Ngoài ra ta có thể sử dụng ngôn ngữ này áp dụng vào lập trình nhúng cho robot
phát hiện vật cản hoặc xử lý hình ảnh theo các vấn đề liên quan như : qr code , nhận diện người đeo khẩu trang nơi công cộng , nhận diện điểm danh nhân viên , học sinh …
- Một số ứng dụng của open-cv : kiểm tra và giảm sát xe tự động ( chụp lại bảng
số xe ) ; các vấn đề liên quan đến xử lý phim ảnh , video ; robot giám sát và xe hơi tự lái ; các ứng dụng điểm danh qua khuôn mặt , …
2.3 Thư viện xử lý ảnh đa luồng Tkinter :
- Đây là thư viện dùng để tạo giao diện cho source code mà ta đã viết
- Từ đó , người dùng có một giao diện thân thiện và dễ sử dụng , dễ dàng tiếp cận với những tính năng mà lập trình viên đã viết
- Hơn thế , người dùng còn có thể áp dụng giao diện này lên robot hoặc các màn hình HMI để tiện sử dụng ở những nơi công cộng
Hình 1 : Khai báo tkinter , tạo một cửa sổ đơn giản
Trang 10Hình 2 : Kết quả thu được
Trang 11TRANG 6
CHƯƠNG 3 : GIẢI THUẬT VÀ ĐIỀU KHIỂN
3.1 Flowchart :
- Chia ra làm 3 lưu đồ flowchart cho 5 nút chức năng :
- Lưu đồ cho nút QR tools :
Hình 3 : Flowchart cho QR Tools
Trang 12- Lưu đồ cho xử lý ảnh :
Hình 4 : Flowchart cho Check-in điểm danh
- Lưu đồ cho nút Exit ( thoát khỏi chương trình )
Hình 5 : Flowchart cho Exit
3.2 Hoạt động của chương trình :
- Khi người dùng nhấn nút QR Tools , sẽ được di chuyển đến cửa sổ tạo qr code
và có các chức năng tạo và quét ( scan ) qr code
- Khi người dùng muốn xử lý ảnh thì theo ba bước :
+ Bước 1 : Nhấm samples để lấy mẫu nhân viên train cho máy tính
Trang 13TRANG 8
+ Bước 2 : Nhấn nút Train để máy tính train dữ liệu nhân viên
+ Bước 3 : Mở check-in để nhận diện nhân viên
ret , img = cap.read()
for barcode in decode(img):
myData = barcode.data.decode( 'utf-8' )
print(myData)
pts = np.array([barcode.polygon] , np.int32)
pts = pts.reshape((-1 , 1 , 2))
cv2.polylines(img , [pts] , True, (255 , 0 , 255) , 5
cv2.imshow( 'QRCode' , img)
if (cv2.waitKey(1) & 0xff == ord( 'q' )):
Trang 14window = Toplevel(check_app)
window.geometry( '520x150' )
window.title( "QR CODE Generator" )
window.iconbitmap( 'logoNTP.ico' )
window.resizable( False, False )
link = Label(window , text = "Enter Your Data" , fg = 'black' , font = 'arial 10' )
# create button save & create QR code
btn_save = Button(window , width =10 , text = "Browse" , command =open_path) btn_save.place( x 300 , y 70)
btn_create_QR = Button(window , width =10 , text = "Create" ,
Trang 15check_app.resizable( False, False )
name = Label(check_app , text = "CHECK-IN APP" , fg = "#0000FF" , bd =0 ,
bg = '#D8E7EE' )
name.config( font =( "Transformers Movie" , 30))
name.pack( pady =20) #cachtructhangdung 10 donvi
name_1 = Label(check_app , text = "NGUYEN TAN
recognizer = cv2.face.LBPHFaceRecognizer_create()
recognizer.read( 'Recognizer/traindata.yml' )
def getProfile (id) :
Trang 16conn = sqlite3.connect( '/Users/iamnt/Desktop/QR_Pro/Data/data.db' ) query = "SELECT * FROM people WHERE ID=" + str(id)
ret , frame = cap.read()
gray = cv2.cvtColor(frame , cv2.COLOR_BGR2GRAY)
- Ta sử dụng thư viện numpy để xử lý ảnh về dạng ma trận
- Sqlite3 để kết nối với database mà ta đã tạo từ trước từ đó lấy ra ID và hình từ tệp file đã train
- Biến confidence chỉ độ chính xác giống với tệp đã train
- Nếu vòng lặp While luôn đúng thì camera sẽ mở và tiến hành xử lý ảnh nhận được và so sánh với tệp đã train ( file csv)
- Nếu confidence < 40% thì tiến hành lấy ID và lấy profile từ tệp data
- Còn lại thì không nhận diện được
Trang 18Hình 6 : Giao diện tổng quan
3.4.2 Giao diện QR Tools :
Hình 7 : Giao diện QR Tools
Trang 19TRANG 14
CHƯƠNG 4 : THỰC NGHIỆM
4.1 Tạo một file QR Code bất kì bằng QR Tools :
Hình 7 : Tạo QR Code với QR Tools
Hình 8 : Kết quả thu được
Trang 204.2 Train model và check in :
Hình 9 : Nhập ID và Name
Hình 10 : Tệp ảnh samples thu được
Trang 21TRANG 16
CHƯƠNG 5 : KẾT LUẬN
5.1 Ưu điểm :
- Phát hiện và lấy mẫu nhạy , độ chính xác tốt ở điều kiện đủ sáng
- Có QR tools tích hợp trong app để tiến hành tạo và đọc qr code
- Ứng dụng được vào thời kì dịch bệnh
5,2 Nhược điểm :
- Phụ thuộc vào chất lượng camera và điều kiện sáng nên ở những điều kiện thiếu
sáng còn gặp hạn chế về độ đo đạc
- Việc linh hoạt giữa những cửa sổ còn hạn chế
- Còn phát sinh nhiều lỗi do xung đột chương trình như tràn bộ nhớ lúc chuyển
giao trạng thái
5.3 Hướng phát triển :
- Tích hợp phát hiện người có đeo khẩu trang hay không nơi công cộng
- Phát hiện và cảnh báo người hút thuốc ở bệnh viện
- Tích hợp với robot ( ví dụ ohmni ) để phát triển các tính năng trên cũng như mở
rộng như : hỗ trợ bác sĩ , y tá trong chăm sóc bệnh nhân , đo đạc nhiệt độ , sp02 cho bệnh nhân , hướng dẫn khách tham quan …
Trang 22TÀI LIỆU THAM KHẢO
[1] Code để train và nhận diện khuôn mặt nhân viên :
https://www.youtube.com/channel/UCtD7PVV6oW6xFNE8j0gsxtA
[2] Tkinter đa luồng để tạo giao diện app :
https://www.youtube.com/c/M%C3%ACAIblog