Code:
cascade = cv2.CascadeClassifier(CASCADE_XML_PATH)
result = cascade.detectMultiScale(greyscale_image, scaleFactor=1.05, minNeighbors=1, minSize=(200, 200), flags=0)
print(result)
result2 = cascade.detectMultiScale2(greyscale_image, scaleFactor=1.05, minNeighbors=1, minSize=(200, 200), flags=0)
print(result2)
result3 = cascade.detectMultiScale3(greyscale_image, scaleFactor=1.05, minNeighbors=1, minSize=(200, 200), flags=0, outputRejectLevels=True)
print(result3)
The constant CASCADE_XML_PATH
is actually [...]/opencv-3.1.0/data/haarcascades/haarcascade_frontalface_alt2.xml
, so I'm doing face detection.
Output:
[[ 34 339 403 403]]
(array([[ 34, 339, 403, 403]], dtype=int32), array([[49]], dtype=int32))
(array([[112, 297, 258, 258]], dtype=int32), array([[20]], dtype=int32), array([[ 56.77932617]]))
As you can see, cascade.detectMultiScale()
and cascade.detectMultiScale2()
give the same bounding box, but cascade.detectMultiScale3()
gives a different bounding box, which is baffling. Am I doing something wrong? Has anyone else experienced this?