2017-02-08 9 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

関連する問題