我同时在OpenCV中使用两种Haar级联算法(正面和轮廓)来改善人脸检测。

不幸的是,检测无法正常工作,我不知道如何解决。返回值为2(在带有5张脸的图片上,通常可以检测到),并且所有矩形都消失了。

这是预期的结果(没有重叠的矩形):

python - 使用OpenCV合并重叠的矩形-LMLPHP

This is the original picture (and also the result.jpg) if you want to make your own test.

这是代码:

import cv2
import numpy as np

image=cv2.imread("/home/pi/Downloads/test.jpg")
face_cascade=cv2.CascadeClassifier("/home/pi/opencv-3.4.0/data/haarcascades/haarcascade_frontalface_alt.xml")
profil_cascade=cv2.CascadeClassifier("/home/pi/opencv-3.4.0/data/haarcascades/haarcascade_profileface_alt.xml")

gray=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
face=face_cascade.detectMultiScale(gray, 1.06, 5)
profil=profil_cascade.detectMultiScale(gray, 1.1, 5)

combined_array=np.append(face, profil, axis=0)
combined_list=combined_array.tolist()
result=cv2.groupRectangles(combined_list,2)

print("I've found "+str(len(result))+ " face(s)")

for (x,y,w,h) in result[0]:
    cv2.rectangle(image,(x,y),(x+w,y+h),(0,0,255),2)

cv2.imwrite("/home/pi/Download/result.jpg", image)

最佳答案

非最大抑制算法用于解决检测结果重叠的问题。 pyimagesearch上有一篇非常好的文章和代码,可帮助您朝正确的方向前进。

关于python - 使用OpenCV合并重叠的矩形,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52318311/

10-12 20:14