Xác định khuôn mặt từ video thu được từ Robot NAO

Một phần của tài liệu Ứng dụng TensorFlow xây dựng hệ thống nhận diện khuôn mặt và phát hiện đối tượng trên robot NAO: báo cáo nghiên cứu khoa học sinh viên (Trang 39 - 41)

7. Kết cấu của đề tài

3.1.3. Xác định khuôn mặt từ video thu được từ Robot NAO

Để xác định được khuôn mặt trong video mà Robot NAO thu được, tác giả sẽ dùng chương trình xác thực khuôn mặt mà tác giả đã nói ở chương 2. Sau khi chương trình xác thực xong khuôn mặt trong video, kết quả thu được là tên của một người.

Trong chương trình có sử dụng hai file có đuôi .txt để lưu trữ kết quả thu được. Một file sẽ lưu tên của người mà Robot nhận diện được để có thể kiểm tra điều kiện và chào người đó một lần một ngày. File này mỗi ngày sẽ được tạo một file với định dạng là DD-MM-YYYY. Một file sẽ lưu chuỗi mà Robot sẽ nói khi có kết quả nhận diện khuôn mặt. Khi khuôn mặt được nhận diện là một người mới trong ngày, chuỗi lưu trữ sẽ là: “Hello” + tên nhận diện được + “! Nice to meet

you!”. Khi khuôn mặt nhận diện là một người đã gặp trong ngày thì chuỗi lưu trữ

là: “Good to see you again” + tên nhận được. Khi gặp một người mà Robot

không biết thì chuỗi lưu trữ sẽ là: “Sory! I don’t know who are you!”.

import datetime

dt_now = datetime.datetime.now()

date_dmy = dt_now.strftime("%d-%m-%Y")

dt = str(date_dmy)+".txt"

print(dt)

ifnot dt in os.listdir("."):

system("echo.>"+dt)

Hình 3-5: Code kiểm tra và tạo file lưu trữ danh sách tên Robot NAO gặp trong ngày

result_names ="" #Biến chứa tên để xử lý

flag =0 #Biến lưu trạng thái người nao nhận diện đã biết hay chưa

for H_i in HumanNames:

if HumanNames[best_class_indices[0]] == H_i and

predictions[0][best_class_indices[0]]>0.50:

result_names = HumanNames[best_class_indices[0]]

flag= 1 #Biến lưu trạng thái người nao nhận diện được NAO biết hay không

flag_exist =0 #Biến lưu trạng thái đã gạp một ngày nào đó trong ngày chưa

ten = result_names.replace('_', ' ') #Nếu tên đặt theo định dạng Cao_Minh_Tiên thì chuyển về Cao Minh Tiên

with open(dt, encoding="utf-8")as fp: #Mở file có tên là ngày hiện tại lên để kiểm tra tên đã tồn tại hay chưa

for line in fp:

if line==ten: #Nếu tên đã tồn tại thì thay đổi trạng thái của biến lưu trạng thái

flag_exist = 1 fp.close()

if flag_exist == 0: #Nếu nguoiqd này chưa gặp trong ngày thì chào và lưu tên vào danh sách người đã gặp trong ngày

f_result= open("result.txt",'w', encoding="utf-8") f_result.write("Hello "+ ten +"“! Nice to meet you!")

f_result.close()

ff_result= open(dt,'a', encoding="utf-8")

ff_result.write("\n"+ten)

ff_result.close()

flag=0

else: # Nếu người được nhận diện là đã gặp trong ngày rồi thì chào với kết quả này

f_result= open("result.txt",'w', encoding="utf-8")

f_result.write("Good to see you again "+ ten)

f_result.close()

flag=0

flag_exist =0 #Hiển thị tên lên video

cv2.putText(frame, result_names, (text_x, text_y),

cv2.FONT_HERSHEY_COMPLEX_SMALL,

1,(0,0,255), thickness=1, lineType=2)

if flag ==0: #Khi không nhận ra ai thì thực hiện những lên này str_result ="Sory! I don’t know who are you!"

f_result= open("result.txt",'w', encoding="utf-8")

f_result.write(str_

Hình 3-6: Code xử lý để đưa ra lời chào cho Robot NAO

Một phần của tài liệu Ứng dụng TensorFlow xây dựng hệ thống nhận diện khuôn mặt và phát hiện đối tượng trên robot NAO: báo cáo nghiên cứu khoa học sinh viên (Trang 39 - 41)

Tải bản đầy đủ (PDF)

(46 trang)