我一直在Haar-cascade学习。我一直在关注教程whicg检测面部,然后检测眼睛。从我在网上发现,大多数情况下会首先检测到脸部然后是眼睛。是不是只能探测到眼睛?
这是我检测脸部和眼睛的代码。
import cv2
import numpy
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_alt.xml')
eye_cascade = cv2.CascadeClassifier('haarcascade_lefteye_2splits.xml')
cap = cv2.VideoCapture(0)
while True:
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,y),(x+w,y+h),(255,0,0),2)
rol_gray = gray[y:y+h,x:x+w]
rol_color = img[y:y+h,x:x+w]
eyes = eye_cascade.detectMultiScale(gray,1.5,5)
if eyes is None:
print ("Can't find")
for (ex,ey,ew,eh) in eyes:
cv2.rectangle(img,(ex,ey),(ex+ew,ey+eh),(0,255,0),2)
cv2.imwrite('FaceFileName.jpg', img)
cv2.imshow('img',img)
k = cv2.waitKey(30) % 0xFF
if k == 27:
break;
cap.release()
cv2.destroyAllWindows()
正如你所看到的,我首先使用级联来检测脸部,然后是眼睛。我也试过去除脸部级联,只留下眼睛级联。结果是眼睛无法找到。 haar-cascade只能检测眼睛吗?是否有必要首先检测面部然后是眼睛?