face detection | 臉部偵測

This is the basic face detection method provided by OpenCV. The algorithm behind is Haar-like feature*. The database (haarcascade_frontalface_alt2.xml) that is needed is in the opencv directory that you installed. This database only can detect front face.
Flow:
1. load database(.xml) -> 2. cvHaarDetectObjects() detect face -> 3. receive data in cvrect format

這裡的臉部偵測是用OpenCV提供的基本功能。演算法是哈爾特徵*,數據庫(haarcascade_frontalface_alt2.xml)在安裝opencv的位置內。
流程:
1. 讀入數據庫(.xml) -> 2. 用cvHaarDetectObjects()辯認臉部 -> 3. 以cvrect接收位置



1.
OpenCV provide function to read in database, if data read in is failed, cvLoad will return 0, so we can use if(!cascade) to check.

讀入數據庫的話可以直接使用OpenCV函式,如果讀入不成功的話 cvLoad 會歸還 0,
所以可以用if(!cascade)檢查。

CvHaarClassifierCascade *cascade=NULL;
cascade = (CvHaarClassifierCascade*)cvLoad( CASCADEPATH, 0, 0, 0 );

if (!cascade)
     exit(0);






2.
if cascade successfully loaded in, we can load our source, after that call cvHaarDetectObjects(), remember to use cvCreateMemStorage(0) to create a memory for storage, otherwise the program will return error.

xml讀入cascade成功後就可以正常地讀入視訊式圖片,
之後調用cvHaarDetectObjects(),
storage 先要用cvCreateMemStorage(0) 的方法獲得記憶塊,
順帶一提 storage 不建議函式內建立 這容易產生 memory allocation的問題,
調整cvHaarDetectObjects()的參數主要靠最後的float。

CvMemStorage* storage = 0;
CvSeq *Seqs;

const float SCALEFACTOR = 1.1f;
const int MINNEI = 3;
onst CvSize MINSIZE = cvSize(50, 50);

Seqs = cvHaarDetectObjects( cpimg, (CvHaarClassifierCascade*)cascade,
storage, SCALEFACTOR, MINNEI, 0
//| CV_HAAR_SCALE_IMAGE
| CV_HAAR_DO_CANNY_PRUNING
| CV_HAAR_FIND_BIGGEST_OBJECT
//| CV_HAAR_DO_ROUGH_SEARCH
, min_Size );





3.
Finally, convert the data into cvrect. Haar-like feature detection is simply to use. It is fast enough to run in real-time, but relatively high tolerance, we should minimize it by adjusting the function parameters.

最後,把返回的資料轉成cvrect。opencv的哈爾特徵偵測使用上挺簡單,而且速度夠快,可以實時運行,但使用錯誤率高,要調整cvHaarDetectObjects()的參數去盡量減低雜訊。

CvRect *NewRect;

NewRect = (CvRect*)cvGetSeqElem( Seqs, 0 );

if (!NewRect)
return NULL;




Information about Haar-like feature:
關於哈爾特徵:
http://docs.opencv.org/master/d7/d8b/tutorial_py_face_detection.html#gsc.tab=0
https://en.wikipedia.org/wiki/Haar-like_features

留言

此網誌的熱門文章

[OpenCV] RAW rgb data to IplImage | 以rgb原始資料建立IplImage指標

Monitoring System Spec.& IO Mapping

突如奇來的高科技電子零件