Vous êtes sur la page 1sur 3

import cv2

import DobotDllType as dType


api=dType.load()
dType.ConnectDobot(api,"COM10",115200)
dType.SetJOGJointParams(api, 300, 300, 300, 300, 300, 300, 300, 300, 0)
# Charger le classificateur Haar pour la détection des visages
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades +
'haarcascade_frontalface_default.xml')

# Capturer la vidéo à partir de la webcam


video_capture = cv2.VideoCapture(0)

while True:
# Lire chaque frame de la vidéo
ret, frame = video_capture.read()

# Convertir le frame en niveaux de gris pour une meilleure détection


gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

# Détecter les visages dans le frame


faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5,
minSize=(30, 30))

# Dessiner des rectangles autour des visages détectés


for (x, y, w, h) in faces:
cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)

x_pntDeCentreRect=(w/2)+x-40
y_pntDeCentreRect=(h/2)+y+40

x_centre_image=(frame.shape[0])/2
y_centre_image=(frame.shape[1])/2

print(x_pntDeCentreRect,y_pntDeCentreRect)
print(x_centre_image,y_centre_image)

if x_pntDeCentreRect-10<x_centre_image<x_pntDeCentreRect+10 and
y_pntDeCentreRect-10<y_centre_image<y_pntDeCentreRect+10:
print("hello")

dType.SetJOGCmd(api, 1, 0, 1)
dType.SetWAITCmd(api, 50, 1)

elif x_centre_image > x_pntDeCentreRect+10 and y_centre_image >


y_pntDeCentreRect+10 :
print("droite haut ")

dType.SetJOGCmd(api, 1, 1, 1)
dType.SetWAITCmd(api, 100, 1)
dType.SetJOGCmd(api, 1, 0, 1)
dType.SetWAITCmd(api, 50, 1)

dType.SetJOGCmd(api, 1, 6, 1)
dType.SetWAITCmd(api, 100, 1)
dType.SetJOGCmd(api, 1, 0, 1)
dType.SetWAITCmd(api, 50, 1)
elif x_centre_image > x_pntDeCentreRect+10 and y_centre_image <
y_pntDeCentreRect-10 :
print("droite bas ")

dType.SetJOGCmd(api, 1, 1, 1)
dType.SetWAITCmd(api, 100, 1)
dType.SetJOGCmd(api, 1, 0, 1)
dType.SetWAITCmd(api, 50, 1)

dType.SetJOGCmd(api, 1, 5, 1)
dType.SetWAITCmd(api, 100, 1)
dType.SetJOGCmd(api, 1, 0, 1)
dType.SetWAITCmd(api, 50, 1)

elif x_centre_image > x_pntDeCentreRect+10 :


print("droite ")

dType.SetJOGCmd(api, 1, 1, 1)
dType.SetWAITCmd(api, 100, 1)
dType.SetJOGCmd(api, 1, 0, 1)
dType.SetWAITCmd(api, 50, 1)

elif x_centre_image < x_pntDeCentreRect-10 and y_centre_image >


y_pntDeCentreRect+10 :
print("gauche haut")

dType.SetJOGCmd(api, 1, 2, 1)
dType.SetWAITCmd(api, 100, 1)
dType.SetJOGCmd(api, 1, 0, 1)
dType.SetWAITCmd(api, 50, 1)
dType.SetJOGCmd(api, 1, 6, 1)
dType.SetWAITCmd(api, 100, 1)
dType.SetJOGCmd(api, 1, 0, 1)
dType.SetWAITCmd(api, 50, 1)

elif x_centre_image < x_pntDeCentreRect-10 and y_centre_image <


y_pntDeCentreRect-10 :
print("gauche bas")

dType.SetJOGCmd(api, 1, 2, 1)
dType.SetWAITCmd(api, 100, 1)
dType.SetJOGCmd(api, 1, 0, 1)
dType.SetWAITCmd(api, 50, 1)

dType.SetJOGCmd(api, 1, 5, 1)
dType.SetWAITCmd(api, 100, 1)
dType.SetJOGCmd(api, 1, 0, 1)
dType.SetWAITCmd(api, 50, 1)

elif x_centre_image < x_pntDeCentreRect-10 :


print("gauche")

dType.SetJOGCmd(api, 1, 2, 1)
dType.SetWAITCmd(api, 100, 1)
dType.SetJOGCmd(api, 1, 0, 1)
dType.SetWAITCmd(api, 50, 1)

elif y_centre_image > y_pntDeCentreRect+10:


print("haut")

dType.SetJOGCmd(api, 1, 6, 1)
dType.SetWAITCmd(api, 100, 1)
dType.SetJOGCmd(api, 1, 0, 1)
dType.SetWAITCmd(api, 50, 1)

elif y_centre_image < y_pntDeCentreRect-10:


print("bas")

dType.SetJOGCmd(api, 1, 5, 1)
dType.SetWAITCmd(api, 100, 1)
dType.SetJOGCmd(api, 1, 0, 1)
dType.SetWAITCmd(api, 50, 1)

print(x_centre_image,y_centre_image)
print(x_pntDeCentreRect,y_pntDeCentreRect)

# Afficher le frame avec les visages détectés


cv2.imshow('Face Detection', frame)

# Quitter la boucle si la touche 'q' est pressée


if cv2.waitKey(1) & 0xFF == ord('q'):
break

# Libérer les ressources


video_capture.release()
cv2.destroyAllWindows()

Vous aimerez peut-être aussi