OpenCVでHOG特徴量を用いて人を検出する
OpenCVでHOG特徴量を求め,それに基づき人を検出する.OpenCVには人検出用に学習された識別器がすでに存在しているので簡単にできる.
入力画像
出力画像
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
参考
- Hirokatsu Kataoka's wiki - HOG特徴量
- Journal_15.pdf
- HOGDescriptor::computeGradient using OpenCV - Stack Overflow
- HOG使ってみた - Puku's Laboratory
- 物体検出 — opencv 2.2 documentation
- OpenCV cv::HOGDescriptor & cv::gpu::HOGDescriptor sample
- public:hog_descriptor_computation_and_visualization [juergen's work wiki]