基於 OpenCV 經典算法(Haar 級聯分類器 + LBPH/LDA 識別器)實現人臉檢測與性別識別,MFC 界面,歷時一個月完成(除寒假)。系列教程涵蓋環境配置、視頻采集、人臉檢測、特徵提取、分類器訓練、界面交互等全流程。
CascadeClassifier(人臉檢測)、FaceRecognizer(LBPH/Eigenfaces/Fisherfaces)CBitmap 繪圖,多線程視頻流代碼規范化(Ctrl+K+F)將字符串字面值斷行並自動縮進:
// 原始正確
CString path = _T("D:\\Data\\haarcascade_frontalface_alt.xml");
// 格式化後錯誤(前導空格破壞路徑)
CString path = _T("D:\\Data\\haarcascade_frontalface_alt.xml"
" "); // 多出空格!
解決:避免在字符串字面值中換行,或用原始字符串字面值 R"(...)" (C++11)。
opencv_worldxxx.dll、tbb.dll)項目使用 OpenCV 內置經典算法(Haar+LBPH),屬傳統機器學習方法:
原計劃生成獨立 EXE 發布,遇到問題:
windeployqt 風格工具或 Docker 容器化CFaceGenderApp ├── CFaceGenderDoc // 數據管理:視頻流、檢測結果、分類器 ├── CFaceGenderView // 顯示:繪製矩形框、標籤、FPS ├── CFaceDetector // 封裝 CascadeClassifier ├── CGenderRecognizer // 封裝 FaceRecognizer 訓練/預測 └── CVideoCaptureThread // 背景線程采集幀,PostMessage 通知 UI
scaleFactor、minNeighbors、minSize 極大影響檢測召回率/精度這個項目適合學習 MFC、OpenCV 基礎 API、視頻流處理、多線程 UI 交互。但若目標是「人臉識別技術本身」,請直接學習深度學習(PyTorch/TensorFlow + InsightFace/DeepFace),傳統算法僅作歷史參考。