1.
while(!fin.eof())
{
fin>>stemp>>n;
sprintf(imgpath, "%s/%s",imagefolder_pic.c_str(),stemp.c_str());
img1 = imread(imgpath);
begin=clock();
int faceCount=THFI_DetectFace(0,img1.data,24,img1.rows,img1.cols,ptfp1,10);
end=clock();
printf("%d: time cost : %.2f ms\n",frameCount,double(end-begin));
// printf("nNum1:=%d\n",faceCount);
for (int x=0;x<faceCount;x++)
{
rectangle(img1,cvPoint(ptfp1[x].rcFace.left,ptfp1[x].rcFace.top),cvPoint(ptfp1[x].rcFace.right,ptfp1[x].rcFace.bottom),Scalar(255,0,0),1,1,0);
}
frameCount=frameCount+1;
// imshow("xxx",img1);
// cvWaitKey(1);
} //end of while
在while 里面加 imshow 图片,得到的检测时间是:
、
但是去掉 imshow 之后出现的结果是:
整整少了100ms
原因在哪里?
顺便说一下:对于传统的方法来说,在有gpu 的电脑上速度并不能快很多。
比如我在i7-3770 上的运算速度是150 ms
在i7-4770 上的每一帧检测的速度也差不多是125ms 的样子
不会因为我的i7-4770的处理器配置了gpu 速度会提升10倍以上。