2017-02-08 15 views
-1

Мне нужно определить грани, используя openCV и python. Затем определите положение обнаруженного лица, если оно находится справа, слева или в середине экрана. Я уже успел обнаружить лица, используя приведенный ниже код, и все еще знать, какое лицо может кому-то помочь мне?Как определить местоположение обнаруженной грани

import cv2 
    import sys 
    import numpy as np 

    face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') 


    cap = cv2.VideoCapture(1) 


while True: 
    #capture frame by frame 
    ret,frame = cap.read() 

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

    faces = face_cascade.detectMultiScale(gray, 
             scaleFactor=1.1, 
             minNeighbors= 5, 
             minSize=(30, 30), 
             flags=cv2.cv.CV_HAAR_SCALE_IMAGE) 


    #Draw a rectangle around the faces 
    for (x, y, w,h) in faces: 
     cv2.rectangle(frame, (x, y), (x+w, y+h), (0,255, 0), 2) 


    cv2.imshow('video',frame) 

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

cap.release() 
cv2.destroyAllWindows() 

ответ

1

Вы можете получить в центре прямоугольника:

centre_x = x + w/2 
centre_y = y + y/2 

Затем сравните его с размером изображения. Если у вас есть информация формы изображения:

height, width, channels = frame.shape #it could be gray.shape too 

Вы можете понять, например, если лицо обнаружено на левой стороне изображения, проверяя centre_x<width.

У вас есть вся информация, чтобы разделить изображение на сетку и понять, где находится прямоугольник.

+1

спасибо. Это помогло мне :) –

+0

Я думаю, что это может быть centre_x <ширина/2 или centre_y <высота/2 –