本博文ide為vs2013
opencv2.49
如下:
程式截圖如下:
如何來用opencv來實現能。
下面給出opencv實現人臉檢測的一般步驟:
1.載入人臉檢測器
2.開啟攝像頭
3.對進行灰度處理(其實可以不處理,上圖中原圖的標題欄就是未進行灰度處理進行的檢測,這裡的灰度是為下節人臉識別打基礎)
4.對進行直方圖均衡化(其實可以不處理,上圖中原圖的標題欄就是未進行灰度處理進行的檢測和灰度圖是為進行均衡化識別,這裡的均衡化是為下節人臉識別打基礎)
5.人臉檢測
總結下,如果單單只要人臉檢測,可以的步驟是1,2,5
本部落格把1,2,5,
1,2,3,5
1,2,3,4,5
都演示了出來。
下面是完整的**,本**還有大量注釋,在此不再具體說明哪個函式有什麼用。
下面上原始碼:
#include #include #include using namespace cv;
void pic2gray(mat camerframe,mat &gray)
else if (camerframe.channels() == 4)
else
gray = camerframe;
}int main()
catch (cv::exception e){}
if (facedetector.empty())
//開啟攝像頭
videocapture camera(0);
while (true)
mat displayedframe(camerframe.size(),cv_8uc3);
//人臉檢測只試用於灰度影象
mat gray;
pic2gray(camerframe, gray);
//直方圖均勻化(改善影象的對比度和亮度)
mat equalizedimg;
equalizehist(gray, equalizedimg);
//人臉檢測用cascade classifier::detectmultiscale來進行人臉檢測
int flags = cascade_find_biggest_object|cascade_do_rough_search; //只檢測臉最大的人
//int flags = cascade_scale_image; //檢測多個人
size minfeaturesize(30, 30);
float searchscalefactor = 1.1f;
int minneighbors = 4;
std::vecto***ces;
facedetector.detectmultiscale(equalizedimg, faces, searchscalefactor, minneighbors, flags, minfeaturesize);
//畫矩形框
cv::mat face;
cv::point text_lb;
for (size_t i = 0; i < faces.size(); i++)
}imshow("直方圖均勻化", equalizedimg);
imshow("灰度化", gray);
imshow("原圖", camerframe);
waitkey(20);
} getchar();
return 0;
}
opencv 人臉檢測原始碼解析
在opencv3.2中,objdetect模組設計了快速的目標檢測方法。其特徵提取使用簡單的haar特徵,該特徵可以使用積分圖的方法進行快速提取 訓練過程採用經典的ad boost增強演算法可將多個簡單的弱分類器構建成強分類器 目標檢測或者具體的人臉檢測過程中,採用級聯的多個強分類器,極大加速了目標...
OpenCV人臉檢測
include include include include include include include include include include static cvmemstorage storage 0 建立乙個記憶體儲存器,來統一管理各種動態物件的記憶體 static cvhaar...
OpenCV人臉檢測
win7 32位 opencv3.0 vs2013 對資料夾中進行人臉檢測 在opencv中,人臉檢測用的是harr或lbp特徵,分類演算法用的是adaboost演算法。這種演算法需要提前訓練大量的,非常耗時,因此opencv已經訓練好了,把訓練結果存放在一些xml檔案裡面。在opencv3.0版本...