我的所作所为:
1.我在c ++中构建了opencv facedetection代码并运行可执行文件
2.我在facedetection代码中计算了 detectmultiscale 时间
#include <cstdlib>
#include <iostream>
#include <sys/stat.h>
#include <time.h>
#include "opencv2/opencv.hpp"
#include <ctime>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
VideoCapture cap(0);
if ( !cap.isOpened() ) // if not success, exit program
{
cout << "Can not open camera or video file" << endl;
return -1;
}
CascadeClassifier c;
if (!c.load("haarcascade_frontalface_alt.xml"))
{
printf("Error in loading the xml\n");
return (-1);
}
while(1)
{
Mat image;
cap>>image;
std::vector<Rect> faces;
clock_t begin=clock();
c.detectMultiScale( image, faces , 1.1 , 2, 0 | CASCADE_SCALE_IMAGE, Size(30, 30) );
clock_t stop=clock();
double secs = double(stop - begin) / (CLOCKS_PER_SEC)*1000;
cout<<"Face Detection time in ms= "<<secs<<endl;
for( int i = 0; i < faces.size(); i++ )
{
rectangle(image,faces[i],cv::Scalar(0,0,255),2);
}
imshow("Faces",image);
if(waitKey(10) >= 0) break;
}
return 0;
}
3.上述代码中detectmultiscale所用的时间约为 50 ms
4.我将上述代码更改为共享库,并从测试代码
调用共享库 testing test;
test.facedetection(frame);
5. detectmultiscale所需的时间大约是 85 ms
6.任何人都可以告诉,为什么共享库中的时间与可执行文件中的时间相比较高?