win7 32位 opencv3.0 vs2013 對資料夾中進行人臉檢測
在opencv中,人臉檢測用的是harr或lbp特徵,分類演算法用的是adaboost演算法。這種演算法需要提前訓練大量的,非常耗時,因此opencv已經訓練好了,把訓練結果存放在一些xml檔案裡面。在opencv3.0版本中,訓練好的檔案放在 \build\etc\資料夾下,有兩個資料夾haarcascades和lbpcascades,前者存放的是harr特徵訓練出來的檔案,後者存放的是lbp特徵訓練出來的檔案。
人臉檢測主要用到的是cascadeclassifier這個類,以及該類下的detectmultiscale函式。
函式原型是:
void cascadeclassifier::detectmultiscale(inputarray image, vector& objects, double scalefactor=1.1, int minneighbors=3, int flags=0, size minsize=size(), size maxsize=size())
總共有7個引數,分別是
第乙個引數image: 要檢測的,一般為灰度圖
第二個引數objects: rect型的容器,存放所有檢測出的人臉,每個人臉是乙個矩形
第三個引數scalefactor: 縮放因子,對進行縮放,預設為1.1
第四個引數minneighbors: 最小鄰居數,預設為3
第五個引數flags: 相容老版本的乙個引數,在3.0版本中沒用處。預設為0
第六個引數minsize: 最小尺寸,檢測出的人臉最小尺寸
第七個引數maxsize: 最大尺寸,檢測出的人臉最大尺寸
**:
#include "opencv2\opencv.hpp"
#include
using namespace std;
using namespace cv;
#define num 1103
int main()
//cout << str << endl;
n++;
imgname = str; //影象檔案明格式:imgname(n)
vecto***ces; //建立乙個容器儲存檢測出來的臉
mat gray;
cvtcolor(img, gray, cv_bgr2gray); //轉換成灰度圖,因為harr特徵從灰度圖中提取
equalizehist(gray, gray); //直方圖均衡行
ccf.detectmultiscale(gray, faces, 1.1, 3, 0, size(10, 10), size(100, 100)); //檢測人臉
cout << faces.size() << endl;
if (faces.size()==1)}}
waitkey(0);
return 1;
}
OpenCV人臉檢測
include include include include include include include include include include static cvmemstorage storage 0 建立乙個記憶體儲存器,來統一管理各種動態物件的記憶體 static cvhaar...
opencv人臉檢測
最近有空對學習下opencv的東西,本篇主要記錄對人臉檢測實現,而人臉檢測是為人臉識別做準備。opencv版本 3.3.0 環境 vs2015 void cascadeclassifier detectmultiscale inputarray image,vector objects,double...
OpenCV人臉檢測
import cv2 import matplotlib.pyplot as plt 讀取 的人臉檢測 img cv2.imread data face.jpg 1 讀取一張 gray cv2.cvtcolor img,cv2.color bgr2gray 將轉化成灰度 face cascade c...