OpenCV人臉檢測

2021-08-10 16:06:33 字數 1585 閱讀 9170

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...