2017-09-02 61 views
0

我有一些代码,将绘制一个矩形使用cv2.rectangle函数基于其他参数。这是人脸检测程序的一部分。使用imshow将矩形显示在图像中的屏幕上。但是,由于矩形尺寸的变化性质,矩形不可见时会出现这种情况。在图像中绘制矩形的代码行之后,如何检测矩形是否可见。我想要这样,以便我可以找到何时未检测到面部。这是我的代码:查找如果绘制的矩形在屏幕上可见在opencv蟒蛇

import numpy as np 
import cv2 

# multiple cascades: https://github.com/Itseez/opencv/tree/master/data/haarcascades 

# https://github.com/Itseez/opencv/blob/master/data/haarcascades/haarcascade_frontalface_default.xml 
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') 
# https://github.com/Itseez/opencv/blob/master/data/haarcascades/haarcascade_eye.xml 
eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml') 

cap = cv2.VideoCapture(0) 

while 1: 
    ret, img = cap.read() 
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 
    faces = face_cascade.detectMultiScale(gray, 1.3, 5) 

    for (x,y,w,h) in faces: 
     cv2.rectangle(img,(x + (w/4), y + (h/4)),(x+(3 * w/4),y + (3 * h/4)),(255,0,0),2) 

    cv2.imshow('img',img) 
    k = cv2.waitKey(30) & 0xff 
    if k == 27: 
     break 

cap.release() 
cv2.destroyAllWindows() 

谢谢!

回答

1

在while循环中添加print len(faces)。如果其为零,则检测不到脸部。没有矩形。