【OpenCV】行人检测

OpenCV提供了一个基于HOG和SVM且经过训练的行人检测器,可以用这个SVM分类器以不同尺度的窗口扫描图像,在完整的图像中检测特定物体。

其检测的函数原型是

virtual void cv::HOGDescriptor::detectMultiScale(InputArray img,
    std::vector< Rect > & foundLocations,
    std::vector< double > & foundWeights,
    double hitThreshold = 0,
    Size winStride = Size(),
    Size padding = Size(),
    double scale = 1.05,
    double finalThreshold = 2.0,
    bool useMeanshiftGrouping = false 
)const

或者

virtual void cv::HOGDescriptor::detectMultiScale(InputArray img,
    std::vector< Rect > & foundLocations,
    double hitThreshold = 0,
    Size winStride = Size(),
    Size padding = Size(),
    double scale = 1.05,
    double finalThreshold = 2.0,
    bool useMeanshiftGrouping = false 
)const
	cv::Mat srcImg = cv::imread("people.jpg");
	if (srcImg.empty())
	{
		cout << "error";
		return -1;
	}
	
	std::vector peoples;
	cv::HOGDescriptor peopleHog;
	peopleHog.setSVMDetector(cv::HOGDescriptor::getDefaultPeopleDetector());
	peopleHog.detectMultiScale(srcImg, peoples, 0, cv::Size(4, 4), cv::Size(32, 32), 1.1, 3);

	for (int i = 0; i < peoples.size(); i++)
		cv::rectangle(srcImg, peoples[i], cv::Scalar(0, 0, 255), 2);

	cv::imshow("People detection", srcImg);

	cv::waitKey(0);

【OpenCV】行人检测_第1张图片

你可能感兴趣的:(opencv)