本篇為《C++ 開發人臉性別識別》系列的收官之作,主要完成兩項收尾工作:補充視頻暫停/繼續功能,並對整個 MFC 介面進行規範化美化。
觀察介面發現「下一張」按鈕在視頻模式下閒置,決定將其復用為「暫停/開始」切換鍵:
// 圖片文件夾按鈕事件中 SetDlgItemTextA(IDC_BUTTON_NextImage, "下一張"); // 打開視頻按鈕事件中 SetDlgItemTextA(IDC_BUTTON_NextImage, "暫停");
視頻幀處理原本由 SetTimer(1, 10, NULL) 驅動,暫停本質上就是銷毀定時器,繼續則重建:
void CGenderRecognitionMFCDlg::OnBnClickedButtonNextimage() {
static int count = 0; // 靜態變量保持狀態
if (m_boolModelFlag == FALSE) { // 視頻模式
if (count % 2 == 0) { // 當前運行中 → 暫停
SetDlgItemTextA(IDC_BUTTON_NextImage, "開始");
KillTimer(1); // 銷毀定時器,幀處理停止
count = 1;
} else { // 當前暫停中 → 繼續
SetDlgItemTextA(IDC_BUTTON_NextImage, "暫停");
SetTimer(1, 10, NULL); // 重建定時器
count = 0;
}
} else { // 圖片模式
GetNextBigImg(); // 原有邏輯
}
}
為三個編輯框分別加上「識別結果」、「置信度」、「處理時間」等 Static Text 控件,讓用戶一眼明白數據含義。
將相關控件用 Group Box 框起並命名:
在圖片顯示區域下方添加一行灰色提示文字:「雙擊此處切換讀取模式」,引導用戶發現隱藏的雙擊切換功能。

歷時 30 天,從 MFC 框架搭建、OpenCV 整合、人臉檢測、特徵提取(PCA/Fisher/LBP/HOG)、分類器訓練(SVM)、視頻流處理、批量樣本生成,到最終的介面交互打磨,完整實現了一個可運行的人臉性別識別桌面應用。代碼結構清晰、模組解耦,便於後續擴展(如換用深度學習模型、添加年齡/表情識別等)。