行人檢測是視覺領域很熱也很有用的一個主題,特別是在無人駕駛中,行人檢測的重要性不言而喻。
在之前進行了人臉檢測之後,行人檢測就顯得簡單多了。過程大致與人臉檢測一樣,都是先加載分類器,然後進行多尺度檢測。就偷懶不再贅述。
這裡只是把代碼放在這裡,沒幾行,而且都有著注釋:
#include#include #include //#include using namespace cv; int main(int argc, char** argv) { Mat img; vector people; img = imread("xingren.jpg",1); //定義HOG對象,采用默認參數,或者按照下面的格式自己設置 HOGDescriptor defaultHog; //(cv::Size(64, 128), cv::Size(16, 16), cv::Size(8, 8), //cv::Size(8, 8),9, 1, -1, //cv::HOGDescriptor::L2Hys, 0.2, true, //cv::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; }
效果圖如下: