首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

C++ 開發人臉性別識別教程(19)—— 界面美化與視頻暫停功能完善

     編輯:關於C++

本篇為《C++ 開發人臉性別識別》系列的收官之作,主要完成兩項收尾工作:補充視頻暫停/繼續功能,並對整個 MFC 介面進行規範化美化。

一、視頻暫停功能實現

1.1 復用「下一張」按鈕

觀察介面發現「下一張」按鈕在視頻模式下閒置,決定將其復用為「暫停/開始」切換鍵:

  • 圖片模式 → 顯示「下一張」
  • 視頻模式 → 顯示「暫停」/「開始」

1.2 按鈕文字動態切換

// 圖片文件夾按鈕事件中
SetDlgItemTextA(IDC_BUTTON_NextImage, "下一張");

// 打開視頻按鈕事件中
SetDlgItemTextA(IDC_BUTTON_NextImage, "暫停");

1.3 定時器控制暫停/繼續邏輯

視頻幀處理原本由 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(); // 原有邏輯
    }
}

二、介面美化與規範化

2.1 添加靜態文本標註

為三個編輯框分別加上「識別結果」、「置信度」、「處理時間」等 Static Text 控件,讓用戶一眼明白數據含義。

2.2 使用 Group Box 分組

將相關控件用 Group Box 框起並命名:

  • 「圖片操作區」:包含「圖像文件夾」、「下一張」
  • 「視頻操作區」:包含「打開視頻」、「暫停/開始」
  • 「識別設置區」:包含分類器下拉框、幀數下拉框
  • 「結果顯示區」:包含結果編輯框、圖片顯示框

2.3 交互提示優化

在圖片顯示區域下方添加一行灰色提示文字:「雙擊此處切換讀取模式」,引導用戶發現隱藏的雙擊切換功能。

添加靜態文本標註 最終界面效果

三、專案總結

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

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved