http://study.marearts.com/2014/09/opencv-face-detection-using-adaboost.html
#include < iostream> #include "opencv2\objdetect\objdetect.hpp" #include "opencv2\highgui\highgui.hpp" #include "opencv2\imgproc\imgproc.hpp" #include "opencv2\cudaobjdetect.hpp" #include "opencv2\cudaimgproc.hpp" #ifdef _DEBUG #pragma comment(lib, "opencv_core300d.lib") #pragma comment(lib, "opencv_highgui300d.lib") #pragma comment(lib, "opencv_imgcodecs300d.lib") #pragma comment(lib, "opencv_objdetect300d.lib") #pragma comment(lib, "opencv_imgproc300d.lib") #pragma comment(lib, "opencv_cudaobjdetect300d.lib") #else #pragma comment(lib, "opencv_core300.lib") #pragma comment(lib, "opencv_highgui300.lib") #pragma comment(lib, "opencv_imgcodecs300.lib") #pragma comment(lib, "opencv_objdetect300.lib") #pragma comment(lib, "opencv_imgproc300.lib") #pragma comment(lib, "opencv_cudaobjdetect300.lib") #endif using namespace std; using namespace cv; void main() { //for time measure float TakeTime; unsigned long Atime, Btime; //window namedWindow("origin"); //load image Mat img = imread("sh.jpg"); Mat grayImg; //adaboost detection is gray input only. cvtColor(img, grayImg, CV_BGR2GRAY); //load xml file string trainface = ".\\haarcascade_frontalface_alt.xml"; //declaration Ptr< cuda::CascadeClassifier> cascade_gpu = cuda::CascadeClassifier::create(trainface); ///////////////////////////////////////////// //gpu case face detection code cuda::GpuMat faceBuf_gpu; cuda::GpuMat GpuImg; vector< Rect> faces; GpuImg.upload(grayImg); Atime = getTickCount(); cascade_gpu->detectMultiScale(GpuImg, faceBuf_gpu); cascade_gpu->convert(faceBuf_gpu, faces); Btime = getTickCount(); TakeTime = (Btime - Atime) / getTickFrequency(); printf("detected face(gpu version) =%d / %lf sec take.\n", faces.size(), TakeTime); Mat faces_downloaded; if (faces.size() >= 1) { for (size_t i = 0; i < faces.size(); ++i) rectangle(img, faces[i], Scalar(255)); } ///////////////////////////////////////////////// //result display imshow("origin", img); waitKey(0); }
No comments:
Post a Comment