2

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?

Ray
  • 7,833
  • 13
  • 57
  • 91

0 Answers0