利用opencv的dnn模块加载,无需安装caffe,安装opencv即可(3.3以上支持dnn模块)
效果图
代码实现
int main(int argc, char **argv)
{
/*VideoCapture cap;
cap.open(2); //打开摄像头
if(!cap.isOpened())
return 0;*/
Mat image;
int minSize = 40;
MTCNN detector("model");
float factor = 0.709f;
float threshold[3] = { 0.7f, 0.6f, 0.6f };
int i=0;
while(1)
{
//cap>>image;
image = imread("test.jpg");
if(image.empty())
break;
double start = clock();
vector<FaceInfo> faceInfo = detector.Detect_mtcnn(image, minSize, threshold, factor, 3);
double end = clock();
cout << "GetTickCount:" << end - start << endl;
for (int i = 0; i < faceInfo.size(); i++)
{
int x = (int) faceInfo[i].bbox.xmin;
int y = (int) faceInfo[i].bbox.ymin;
int w = (int) (faceInfo[i].bbox.xmax - faceInfo[i].bbox.xmin + 1);
int h = (int) (faceInfo[i].bbox.ymax - faceInfo[i].bbox.ymin + 1);
cv::rectangle(image, cv::Rect(x, y, w, h), cv::Scalar(255, 0, 0), 2);
}
imshow("quick-test", image);
waitKey(0);
}