人体部分HAAR级联分类器

时间:2013-11-18 06:52:29

标签: c++ opencv

我正在尝试从图像中检测不同的身体部位。它类似于openCV中提供的面部检测分类器。我尝试训练和制作自己的分类器来检测人的手,腿,躯干等。他们提供了很多误报。有人创建了身体部位分类器吗?如果有人可以分享,我将非常感激。

2 个答案:

答案 0 :(得分:1)

我不确定HAAR是最好的方法。我会尝试以某种方式在潜伏的svm探测器中使用“人”模型的滤波器或更好 - 使用潜伏的svm探测器来检测整个身体,然后检查不同身体的滤波器的位置。

潜-SVM http://docs.opencv.org/modules/objdetect/doc/latent_svm.html

答案 1 :(得分:0)

我使用“ haarcascade_frontalface_default.xml”进行面部检测。 尝试编写的Torso图像分类器代码(在Python中)可用于其他人体部位图像分类器。

主要#

import cv2 
import numpy as np
from body import torso

face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')

cap = cv2.VideoCapture(0)

while True:
    ret, img = cap.read()
    scale_percent = 79 # percent of original size
    width = int(img.shape[1] * scale_percent / 100)
    height = int(img.shape[0] * scale_percent / 100)
    dim = (width, height)

    resized = cv2.resize(img, dim, interpolation = cv2.INTER_AREA)
    gray = cv2.cvtColor(resized,cv2.COLOR_BGR2GRAY)
    faces = face_cascade.detectMultiScale(gray, 1.3,5)
    for (x,y,w,h) in faces:
        #rectangle face
        cv2.rectangle(resized,(x,y),(x+w, y+h), (255,0,0), 2)
        face_start = (x,y)
        face_end = (x+w, y+h)

        #rectangle torso
        torso_xy = torso(face_start,face_end) 
        # cv2.rectangle(resized,((x-30, y+h)),(face_end[0]+30, face_end[1]+100), (0,122,0), 2)
        cv2.rectangle(resized,torso_xy[0],torso_xy[1], (0,122,0), 2)
    cv2.imshow('img',resized)
    k = cv2.waitKey(30) & 0xff
    if k == 27:
        break

cap.release()
cv2.destroyAllWindows() 

body.py

import os

def torso(face_start,face_end):
    mid_face_x = int((face_start[0] + face_end[0]) / 2)
    mid_face_y = int((face_start[1] + face_end[1]) / 2)

    face_width_x= face_end[0] - face_start[0]
    face_height_y= face_end[1] - face_start[1]

    start_torso = (
    (mid_face_x-face_width_x), (face_end[1]+int(face_end[1]*0.05))
    )

    end_torso = (
    (mid_face_x+face_width_x), (face_end[1]+int(face_height_y*3))
    )
    return ((start_torso,end_torso))

Human Torso Image Classifier