具体原理网上例子太多了,这里只提供代码。
WITHOUT CUDA:
先来看一下不用CUDA时的效果:代码如下:
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main()
{
VideoCapture cap("abc.avi");
if (!cap.isOpened())
{
cerr << "can not open camera or video file" << endl;
return -1;
}
while (1) {
Mat src;
cap.read(src);
if (src.empty())
break;
//Define HOG Object
HOGDescriptor hog;
hog.setSVMDetector(HOGDescriptor::getDefaultPeopleDetector());
//Detect the Pedestrians region on the test image
vector<Rect> regions;
int64 start = getTickCount();
hog.detectMultiScale(src, regions, 0.3, Size(8, 8), Size(32, 32), 1.05, 1);
double fps = getTickFrequency() / (getTickCount() - start);
cout << "FPS : " << fps << endl;
// Display
for (size_t i = 0; i < regions.size();