美文网首页程序员我爱编程
opencv中haar检测器的使用

opencv中haar检测器的使用

作者: 远叔 | 来源:发表于2018-04-13 23:30 被阅读0次

    haar检测器是一个十分经典也十分古老的检测器,最成功的应用莫过于人脸检测,它的具体原理作者还不甚清楚,查阅相关博客发现讲的也不是很清楚,在这就不班门弄斧了。

    下面讲讲如何使用已经训练好的haar分类器。

    首先建立haar分类器对象,需要读取一个xml文件,这个文件也就是训练好的分类器。

    face_haar = cv2.CascadeClassifier("data/haarcascades/haarcascade_frontalface_default.xml")

    然后利用该分类器检测目标图像(灰度图)

    faces = face_haar.detectMultiScale(gray_img,1.3,5)

    其中1.3和5都是自己设定的参数,具体作用还请查阅官方文档。

    得到的faces是一个列表,列表中元素为检测到的脸部矩形框,至此,脸部检测就完成了,十分简洁。

    下面是完整代码(以一张图像为例)

    # 加载分类器

    face_haar = cv2.CascadeClassifier("data/haarcascades/haarcascade_frontalface_default.xml")

    # 把图像转为黑白图像

    gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

    # 检测图像中的所有脸

    faces = face_haar.detectMultiScale(gray_img,1.3,5)

    for face_x,face_y,face_w,face_h in faces:

        cv2.rectangle(img, (face_x, face_y), (face_x+face_w, face_y+face_h), (0,255,0),2)

    除了,针对脸部的分类器,还有眼睛,鼻子,嘴等已经训练好的分类器,只需加载相应的xml文件即可,这些可以在opencv自带的包中找到,也可以去github上下载opencv_contrib/modules/face/data/cascades at master · opencv/opencv_contrib · GitHub,不过作者目前用嘴部和眼睛检测器时发现检测结果不很理想,脸部还不错。

    相关文章

      网友评论

        本文标题:opencv中haar检测器的使用

        本文链接:https://www.haomeiwen.com/subject/neghkftx.html