Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdafx.h"
- #include <iostream>
- #include "opencv2/opencv.hpp"
- #include "opencv2/objdetect/objdetect.hpp"
- #include "opencv2/highgui/highgui.hpp"
- #include "opencv2/imgproc/imgproc.hpp"
- #include "opencv2/cudaobjdetect.hpp"
- #include "opencv2/cudaimgproc.hpp"
- #include "opencv2/cudawarping.hpp"
- using namespace std;
- using namespace cv;
- void main()
- {
- Ptr<cuda::HOG> d_hog = cuda::HOG::create(Size(64, 128));
- d_hog->setSVMDetector(d_hog->getDefaultPeopleDetector());
- Mat img;
- VideoCapture cap("Source.mp4");
- cap >> img;
- if (img.empty())
- return;
- namedWindow("People motion tracking", 0);
- unsigned long AAtime = 0, BBtime = 0;
- double scale = float(1080) / img.cols;
- cuda::GpuMat GpuImg, rGpuImg;
- GpuImg.upload(img);
- cuda::resize(GpuImg, rGpuImg, Size(GpuImg.cols * scale, GpuImg.rows * scale));
- Mat rInimg;
- rGpuImg.download(rInimg);
- while (true)
- {
- AAtime = getTickCount();
- cap >> img;
- if (img.empty())
- break;
- GpuImg.upload(img);
- cuda::resize(GpuImg, rGpuImg, Size(GpuImg.cols * scale, GpuImg.rows * scale));
- rGpuImg.download(rInimg);
- cuda::cvtColor(rGpuImg, rGpuImg, CV_BGR2GRAY);
- vector<Point> found_locations;
- d_hog->detect(rGpuImg, found_locations);
- std::vector<Rect> found_locations_rect;
- d_hog->detectMultiScale(rGpuImg, found_locations_rect);
- for (int i = 0; i < found_locations_rect.size(); ++i)
- {
- rectangle(rInimg, found_locations_rect[i], CvScalar(0, 0, 255), 1);
- }
- imshow("People motion tracking", rInimg);
- waitKey(10);
- BBtime = getTickCount();
- double s_time = (BBtime - AAtime) / getTickFrequency();
- double fps_time = 1 / s_time;
- printf("%.2lf sec / %.2lf fps \n", s_time, fps_time);
- }
- }
Add Comment
Please, Sign In to add comment