2017-02-08 3 views
-1

Ich muss Gesichter mit openCV und Python erkennen. Identifizieren Sie dann die Position des erkannten Gesichts, wenn es sich rechts, links oder in der Mitte des Bildschirms befindet. Es gelingt mir bereits Gesichter mit dem unten stehenden Code zu erkennen und trotzdem die Position der Gesichter zu kennen könnte mir bitte jemand helfen?Wie erkenne ich die Position des erkannten Gesichts

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() 

Antwort

1

Sie könnten die Mitte des Rechtecks ​​erhalten:

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

vergleichen sie dann mit der Größe des Bildes. Vorausgesetzt, dass Sie die Bildforminformationen haben:

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

Sie beispielsweise verstehen kann, wenn das Gesicht auf der linken Seite des Bildes erkannt wird durch centre_x<width prüft.

Sie haben alle Informationen, um das Bild in ein Raster zu teilen und zu verstehen, wo das Rechteck sich selbst platziert.

+1

Vielen Dank. Das hat mir geholfen :) –

+0

ich denke, es sollte centre_x

Verwandte Themen