首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

OpenCV 實戰:HOG + SVM 行人偵測完整實作

     編輯:關於C++

行人偵測是視覺領域熱門且實用的主題,特別在自駕車中重要性不言而喻。

在完成人臉偵測後,行人偵測顯得簡單許多。流程大致相同:先載入分類器,再進行多尺度偵測。這裡直接提供完整程式碼:

#include 
#include 
#include 
using namespace cv;

int main(int argc, char** argv) {
    Mat img;
    vector people;
    img = imread("xingren.jpg", 1);

    // 定義 HOG 描述子,使用預設參數
    HOGDescriptor defaultHog;
    // 也可自訂參數:
    // HOGDescriptor defaultHog(cv::Size(64,128), cv::Size(16,16),
    //                          cv::Size(8,8), cv::Size(8,8), 9, 1, -1,
    //                          HOGDescriptor::L2Hys, 0.2, true,
    //                          HOGDescriptor::DEFAULT_NLEVELS);

    // 設定 SVM 分類器,使用預設行人偵測器
    defaultHog.setSVMDetector(HOGDescriptor::getDefaultPeopleDetector());

    // 多尺度行人偵測,回傳矩形框
    defaultHog.detectMultiScale(img, people, 0, Size(8,8), Size(0,0), 1.03, 2);

    // 畫矩形框標記行人
    for (int i = 0; i < people.size(); i++) {
        Rect r = people[i];
        rectangle(img, r.tl(), r.br(), Scalar(0, 0, 255), 3);
    }

    namedWindow("偵測行人", CV_WINDOW_AUTOSIZE);
    imshow("偵測行人", img);
    waitKey(0);
    return 0;
}

效果圖如下:
行人偵測結果

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved