OpenCv小白入門 人臉檢測

2021-09-20 01:27:12 字數 1903 閱讀 5972

怎麼說,在我剛剛開始學習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...