Skip to content
Snippets Groups Projects
Commit bcc3f694 authored by KHRIS Badreddine's avatar KHRIS Badreddine
Browse files

Update 2 files

- /create_dataset.py
- /collect_imgs.py
parent ee64a956
Branches
No related tags found
No related merge requests found
......@@ -3,30 +3,30 @@ import os
import cv2
DATA_DIR = './data'
if not os.path.exists(DATA_DIR):
DATA_DIR = './data' # Rep de stockage
if not os.path.exists(DATA_DIR): # Création si il n'existe pas
os.makedirs(DATA_DIR)
nombre_de_classe = 3
taille_du_dataset= 100
nombre_de_classe = 3 #Nombre different d'elements que le modèle devra connaitre
taille_du_dataset= 100 #Nombre d'image d'entrainement pour une classe
cap = cv2.VideoCapture(0)
for j in range(nombre_de_classe):
cap = cv2.VideoCapture(0) #On recupere la caméra
for j in range(nombre_de_classe): # Pour chaque classe je crée un réptoire pour stocker les images
if not os.path.exists(os.path.join(DATA_DIR, str(j))):
os.makedirs(os.path.join(DATA_DIR, str(j)))
print('Collecte image pour la classe {}'.format(j))
done = False
while True:
while True: #Lancement de la vidéo
ret, frame = cap.read()
cv2.putText(frame, 'Appuyez sur Q :)', (100, 50), cv2.FONT_HERSHEY_SIMPLEX, 1.3, (0, 255, 0), 3,
cv2.LINE_AA)
cv2.imshow('frame', frame)
if cv2.waitKey(25) == ord('q'):
if cv2.waitKey(25) == ord('q'):
break
counter = 0
counter = 0 # si il appuye sur Q alors le programme sauvegarde n frame de la vidéo selon la variable taille_du_dateset
while counter < taille_du_dataset:
ret, frame = cap.read()
cv2.imshow('frame', frame)
......
......@@ -6,29 +6,38 @@ import cv2
import matplotlib.pyplot as plt
mp_hands = mp.solutions.hands
mp_drawing = mp.solutions.drawing_utils
mp_drawing_styles = mp.solutions.drawing_styles
# Initialisation des outils de Mediapipe pour la détection des mains
mp_hands = mp.solutions.hands # Module Mediapipe Hands pour la détection des mains
mp_drawing = mp.solutions.drawing_utils # Utilitaire pour dessiner les landmarks des mains
mp_drawing_styles = mp.solutions.drawing_styles # Styles pour afficher les landmarks des mains
hands = mp_hands.Hands(static_image_mode=True, min_detection_confidence=0.3)
# Répertoire contenant les images collectées
DATA_DIR = './data'
data = []
labels = []
for dir_ in os.listdir(DATA_DIR):
for img_path in os.listdir(os.path.join(DATA_DIR, dir_)):
data_aux = []
# Initialisation des listes pour stocker les données et les labels
data = [] # Contiendra les caractéristiques extraites des images
labels = [] # Contiendra les étiquettes associées aux images
x_ = []
y_ = []
# Parcours de chaque classe de gestes (répertoires contenant les images)
for dir_ in os.listdir(DATA_DIR):
for img_path in os.listdir(os.path.join(DATA_DIR, dir_)): # Parcours de toutes les images d'une classe
data_aux = [] # Liste temporaire pour stocker les caractéristiques d'une image
x_ = [] # Liste pour stocker les coordonnées X des landmarks
y_ = [] # Liste pour stocker les coordonnées Y des landmarks
# Lecture de l'image et conversion en format RGB (Mediapipe nécessite le format RGB)
img = cv2.imread(os.path.join(DATA_DIR, dir_, img_path))
img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
# Détection de la main dans l'image
results = hands.process(img_rgb)
# Vérification si une main a bien été détectée
if results.multi_hand_landmarks:
for hand_landmarks in results.multi_hand_landmarks:
# Extraction des coordonnées X et Y de chaque point de repère de la main
for i in range(len(hand_landmarks.landmark)):
x = hand_landmarks.landmark[i].x
y = hand_landmarks.landmark[i].y
......@@ -36,12 +45,14 @@ for dir_ in os.listdir(DATA_DIR):
x_.append(x)
y_.append(y)
# Normalisation des coordonnées : soustraction du minimum pour centrer les données
for i in range(len(hand_landmarks.landmark)):
x = hand_landmarks.landmark[i].x
y = hand_landmarks.landmark[i].y
data_aux.append(x - min(x_))
data_aux.append(y - min(y_))
data_aux.append(x - min(x_)) # Normalisation X
data_aux.append(y - min(y_)) # Normalisation Y
# Ajout des caractéristiques extraites et de l'étiquette associée à l'image
data.append(data_aux)
labels.append(dir_)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment