日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

如何快糙好猛的使用Shiqi.Yu老师的公开人脸检测库(附源码)

發(fā)布時間:2023/12/13 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何快糙好猛的使用Shiqi.Yu老师的公开人脸检测库(附源码) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前言

本次編寫所用的庫為于仕祺老師免費(fèi)提供的人臉檢測庫。真心好用,識別率和識別速度完全不是Opencv自帶的程序能夠比擬的。將其配合Opencv的EigenFace算法,基本上可以形成一個小型的畢業(yè)設(shè)計(jì)。(我是學(xué)機(jī)械的啊喂!!)

準(zhǔn)備工作

1、下載在GitHub上的人臉檢測庫。我不提供百度云,只提供網(wǎng)址:https://github.com/ShiqiYu/libfacedetection。
2、配置好Opencv。

配置人臉檢測庫

1、新建一個MFC程序。

2、添加Opencv的屬性表。(即配置Opencv)

3、新建一個屬性表,命名為libfacedetect。需要注意的是,libfacedetect只可用Win32平臺。在VC++目錄添加libfacedetect_master中include文件夾和lib庫的位置。

4、在鏈接器中添加附加依賴項(xiàng)。

試編寫

1、向MFC中添加一個picture控件,一個button控件,兩個Static Text控件。而后向其中一個Static Text添加變量。

2、雙擊button控件,進(jìn)行代碼頁面,編寫代碼。
添加頭文件:

#include <opencv.hpp>#include "facedetect-dll.h"#pragma comment(lib,"libfacedetect.lib") using namespace cv;

增添一個函數(shù):

void detectAndDisplay(Mat frame) {Mat gray;cvtColor(frame, gray, CV_BGR2GRAY);int * pResults = NULL;pResults = facedetect_frontal_tmp((unsigned char*)(gray.ptr(0)), gray.cols, gray.rows, gray.step,1.2f, 5, 24);printf("%d faces detected.\n", (pResults ? *pResults : 0));//重復(fù)運(yùn)行//print the detection resultsfor (int i = 0; i < (pResults ? *pResults : 0); i++){short * p = ((short*)(pResults + 1)) + 6 * i;int x = p[0];int y = p[1];int w = p[2];int h = p[3];int neighbors = p[4];printf("face_rect=[%d, %d, %d, %d], neighbors=%d\n", x, y, w, h, neighbors);Point left(x, y);Point right(x + w, y + h);rectangle(frame, left, right, Scalar(230, 255, 0), 4);}imshow("ss", frame);}

在按鈕事件中填寫代碼:

VideoCapture cap(0);Mat frame;while (1){//load an image and convert it to gray (single-channel)//Mat gray = imread("lena.png");//it is necessary that must have CV_LOAD_IMAGE_GRAYSCALE//cvtColor(gray, gray, CV_BGR2GRAY);//CV_LOAD_IMAGE_GRAYSCALE IS SAME AS CV_BGR2GRAYcap >> frame;if (!frame.empty()){detectAndDisplay(frame);}int c = waitKey(10);if ((char)c == 'c') { break; }}

(非本人照片)
可以看到,已經(jīng)檢測成功,不過沒有在控件上顯示。

可以通過添加來讓其顯示到框上。

namedWindow("view", WINDOW_AUTOSIZE);HWND hWnd = (HWND)cvGetWindowHandle("view");HWND hParent = ::GetParent(hWnd);::SetParent(hWnd, GetDlgItem(ID_FACE)->m_hWnd);

我們來看看這個函數(shù)逆天的檢測時間:增添檢測時間的代碼:

t = (double)cvGetTickCount(); t = (double)cvGetTickCount() - t; detect_time = t / 1000 / ((double)cvGetTickFrequency()*1000.); UpdateData(FALSE);


于老師最近有一篇文章中寫到,他的這個人臉檢測庫是基于LBP與Boost相結(jié)合的。所以如果我們選取了足夠多,足夠好的樣本,參數(shù)設(shè)置正確的話,識別效果從理論上也能遠(yuǎn)遠(yuǎn)高于Opencv自帶的。此外就是在最近做項(xiàng)目的過程中,發(fā)現(xiàn)人臉檢測這一端還是不能用深度學(xué)習(xí)的方法,其一是DL目前還沒有能夠很方面移植的硬件,其二是如果在云端進(jìn)行的話,傳輸速度將會對識別效率造成影響。

轉(zhuǎn)載于:https://www.cnblogs.com/mtcnn/p/9412041.html

總結(jié)

以上是生活随笔為你收集整理的如何快糙好猛的使用Shiqi.Yu老师的公开人脸检测库(附源码)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。