怎麼說,在我剛剛開始學習opencv的時候,瘋狂的被安利學習opencv(中文版)和數字影象處理不可否認,這些書確實是挺不錯的,我也確實想把他們都細細的啃完;but,一考慮自己這個記憶力,怕是看完就忘記完了哦,再結合某人士說的,我們是站在巨人的肩膀上的
,我們應該從作中學
,沒有實際的操作,一切都是扯淡!
然後,根據自己的興趣,開始學習人臉檢測
* 區別"人臉檢測"和"人臉識別":
人臉檢測和人臉識別的區別
* **的具體實現過程:
第一段**
處理
bool cv::cascadeclassifier::load(const string & filename)
cvtcolor(src_img, gray_img, color_bgr2gray);
equalizehist(gray_img, gray_img);
face_cascade.detectmultiscale(gray_img, faces, 1.1, 2, 0 | cascade_scale_image, size(30, 30));
eyes_cascade.detectmultiscale(faceroi, eyes, 1.1, 2, 0 | cascade_scale_image, size(50, 50));
//-- detect faces
face_cascade.detectmultiscale(gray_img, faces, 1.1, 2, 0 | cascade_scale_image, size(30, 30));
for (size_t i = 0; i < faces.size(); i++)
{point center(faces[i].x + faces[i].width / 2, faces[i].y + faces[i].height / 2);
ellipse(gray_img, center, size(faces[i].width / 2, faces[i].height / 2), 0, 0, 360, scalar(255, 0, 255), 4, 8, 0);
mat faceroi = gray_img(faces[i]);
cout << "i: " << i<< endl;
std::vectoreyes;
//-- in each face, detect eyes
eyes_cascade.detectmultiscale(faceroi, eyes, 1.1, 2, 0 | cascade_scale_image, size(50, 50));
for (size_t j = 0; j < eyes.size(); j++)
{point eye_center(faces[i].x + eyes[j].x + eyes[j].width / 2, faces[i].y + eyes[j].y + eyes[j].height / 2);
int radius = cvround((eyes[j].width + eyes[j].height)*0.25); //獲取半徑、cvround將浮點數四捨五入到最接近的整數。
效果圖github
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版本...
opencv人臉檢測
最近有空對學習下opencv的東西,本篇主要記錄對人臉檢測實現,而人臉檢測是為人臉識別做準備。opencv版本 3.3.0 環境 vs2015 void cascadeclassifier detectmultiscale inputarray image,vector objects,double...