aa develop

開発と成長

OpenCVでHOG特徴量を用いて人を検出する

OpenCVでHOG特徴量を求め,それに基づき人を検出する.OpenCVには人検出用に学習された識別器がすでに存在しているので簡単にできる.

入力画像

f:id:aa_debdeb:20160714111038j:plain

出力画像

f:id:aa_debdeb:20160714111057j:plain

main.cpp

#include 
#include 
#include "opencv2/opencv.hpp"

int main(int argc, const char * argv[]) {
    cv::Mat img = cv::imread("input.jpg", 1);
    if(img.empty()) return -1;
    

    cv::HOGDescriptor hog;
    cv::Mat gray_img;
    std::vector found;
    
    cv::cvtColor(img, gray_img, CV_BGR2GRAY);
    hog.setSVMDetector(cv::HOGDescriptor::getDefaultPeopleDetector());
    hog.detectMultiScale(gray_img, found);



    for(int i = 0; i < found.size(); i++){
        cv::Rect r = found[i];
        rectangle(img, r.tl(), r.br(), cv::Scalar(0, 255, 0), 2);
    }
    cv::imshow("hog", img);
    cv::imwrite("output.jpg", img);
    cv::waitKey(0);
}

OpenCV/hogTest at master · aa-debdeb/OpenCV

参考