add app files

This commit is contained in:
skylights
2024-03-30 06:46:09 +03:00
committed by GitHub
parent 0a7410c34c
commit 8d203a0069
12 changed files with 413 additions and 0 deletions

View File

@@ -0,0 +1,117 @@
import pickle
import customtkinter as ctk
import os
import cv2
from PIL import Image, ImageTk
from deepface import DeepFace
from mtcnn import MTCNN
from catboost import CatBoostClassifier
import pandas as pd
import numpy as np
class Server(ctk.CTkFrame):
def __init__(self, master):
super().__init__(master)
self.counter = 0
self.storage_name: str
self.grid_columnconfigure(0, weight=1)
self.detector = MTCNN()
import socket
self.s = socket.socket()
host = "192.168.120.240"
port = 12345
self.s.bind((host, port))
self.s.listen(5)
self.catboost_model_usa = CatBoostClassifier()
self.catboost_model_usa.load_model("../catboost_usa.cbm")
with open('../model/saved_dictionary.pkl', 'rb') as f:
self.name_usa = pickle.load(f)
# self.grid_rowconfigure(0, weight=1)
self.label = ctk.CTkLabel(self, text="Server", fg_color="blue", text_color="white")
self.label.grid(row=0, column=0, sticky="ew")
self.button_start_predict = ctk.CTkButton(self, text="Get photo from server", command=self.__start_predict)
self.button_start_predict.grid(row=1, column=0, pady=10, sticky="ew")
def __open_file_dialog(self):
root = ctk.CTk()
root.withdraw()
file_path = ctk.filedialog.askdirectory(title='Choose image dataset')
if file_path != '':
root.destroy()
self.storage_name = file_path
self.iterator = iter(os.listdir(self.storage_name))
return file_path
def __start_predict(self):
while True:
c = 0
con, addr = self.s.accept()
with open('FDJ.jpg', 'wb') as f:
while True:
c+=1
print(1)
data = con.recv(65536)
if c >= 3:
f.write(data)
break
if not data:
f.write(data)
break
break
#break
f.write(data)
break
#break
print("break")
break
if self.counter > 0:
self.label.destroy()
self.counter+=1
filename = 'FDJ.jpg'
dicter3 = {}
if filename.endswith("png") or filename.endswith("jpg"):
print(filename)
img = cv2.cvtColor(cv2.imread(filename), cv2.COLOR_BGR2RGB)
img = cv2.resize(img, (1080, 720))
detections = self.detector.detect_faces(img)
if len(detections) > 1:
print("AAAAAAAAA")
for detection in detections:
confidence = detection["confidence"]#
if confidence > 0.9:
x, y, w, h = detection["box"]
detected_face = img[int(y):int(y + h), int(x):int(x + w)]##
image = cv2.rectangle(img, (int(x), int(y)), (int(x+w), int(y+h)), (255, 0, 0), 2)
embedding = DeepFace.represent(detected_face, model_name='Facenet', enforce_detection=False)
ebd = embedding[0]["embedding"]
dicter3[1] = ebd
data_usa = pd.DataFrame.from_dict(dicter3.items())
data_usa.rename(columns={0: "id", 1: "embd"}, inplace=True, errors="ignore")
new_cols = pd.DataFrame(data_usa['embd'].apply(pd.Series))
df_usa = pd.concat([data_usa, new_cols], axis=1)
df_usa.drop(["embd"], axis=1, inplace=True, errors="ignore")
#df_usa["id"] = df_usa["id"].apply(lambda x: str(x)[:str(x).find("_")])
y, X = df_usa["id"], df_usa.drop(["id"], axis=1)
result = self.catboost_model_usa.predict(X)
index_usa = result[0][0]
print(result)
string = self.name_usa[result[0][0]]
encoded_string = string.encode('utf-8') # Кодируем строку в UTF-8
binary_representation = ''.join(format(byte, '08b') for byte in encoded_string)
con.send(binary_representation.encode('utf-8'))
con.close()
print(self.name_usa[result[0][0]])
for images in os.listdir(f'C://Users//fatik//PycharmProjects//UfaHack2024//data//actors_usa//{index_usa}'):
image_usa = cv2.imread(os.path.join(f'C://Users//fatik//PycharmProjects//UfaHack2024//data//actors_usa//{index_usa}', images))
break
image[0:128, 0:128] = cv2.resize(cv2.cvtColor(image_usa, cv2.COLOR_BGR2RGB), (128,128))
#print(np.argmax(result[0], axis=0))
#print(len(result[0]))
self.image = Image.fromarray(image)
self.image_tk = ctk.CTkImage(self.image, size=(self.image.width, self.image.height))
self.label = ctk.CTkLabel(self, image=self.image_tk, text=self.name_usa[result[0][0]], text_color="red")
self.label.grid(row=3, column=0, pady=10, sticky="ew")