# movaid7/opencv_classattendance architecture

> Architecture diagram of the GitHub repository movaid7/opencv_classattendance, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-10). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/movaid7/opencv_classattendance
- Repository: https://github.com/movaid7/opencv_classattendance

## Overview

This is a C++/OpenCV class-attendance application. Its main workflow is to capture webcam frames, detect and recognize faces, track presence and lateness, and write a dated register; the menu also offers student enrollment, register lookup, model improvement, face detection, and data wiping. The sampled source shows the menu, parts of recognition and register handling, face detection helpers, and face preprocessing. Some menu capabilities are documented or visible only in partial excerpts, so their internal links are omitted rather than inferred.

Main entry points: [`AutomatedAttendance/AutomatedAttendance/main.cpp`](https://github.com/movaid7/opencv_classattendance/blob/master/AutomatedAttendance/AutomatedAttendance/main.cpp) (Presence and lateness), [`AutomatedAttendance/AutomatedAttendance/Globals.cpp`](https://github.com/movaid7/opencv_classattendance/blob/master/AutomatedAttendance/AutomatedAttendance/Globals.cpp) (Cascade detection), [`AutomatedAttendance/AutomatedAttendance/Register/Students.txt`](https://github.com/movaid7/opencv_classattendance/blob/master/AutomatedAttendance/AutomatedAttendance/Register/Students.txt) (Student records)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interaction["User interaction"]
  node_menu["Mode menu<br/>[main.cpp]"]
  node_enrollment["Student enrollment<br/>[main.cpp]"]
  node_register_lookup["Register lookup<br/>[main.cpp]"]
end

subgraph group_vision["Vision and recognition"]
  node_camera["Webcam capture<br/>[main.cpp]"]
  node_face_detection["Face detection<br/>[main.cpp]"]
  node_detection_helpers["Cascade detection<br/>[Globals.cpp]"]
  node_eye_alignment["Face preprocessing<br/>[Detect.cpp]"]
  node_face_recognition["Face recognition<br/>[main.cpp]"]
  node_model_improvement["Model improvement<br/>[main.cpp]"]
  node_trained_model["Trained model data<br/>[trainedData.yml]"]
end

subgraph group_attendance["Attendance records"]
  node_attendance_tracking["Presence and lateness<br/>[main.cpp]"]
  node_daily_register["Daily register<br/>[main.cpp]"]
  node_student_records["Student records<br/>[Students.txt]"]
end

node_user(("Operator"))
node_camera_device(("Webcam"))

node_user -->|"selects mode"| node_menu
node_camera -->|"reads frames"| node_camera_device
node_face_detection -->|"detects faces"| node_detection_helpers
node_face_recognition -->|"tracks identity"| node_attendance_tracking
node_attendance_tracking -->|"writes attendance"| node_daily_register
node_register_lookup -->|"reads dated register"| node_daily_register
node_enrollment -->|"appends student"| node_student_records

click node_menu "https://github.com/movaid7/opencv_classattendance/blob/master/AutomatedAttendance/AutomatedAttendance/main.cpp"
click node_enrollment "https://github.com/movaid7/opencv_classattendance/blob/master/AutomatedAttendance/AutomatedAttendance/main.cpp"
click node_register_lookup "https://github.com/movaid7/opencv_classattendance/blob/master/AutomatedAttendance/AutomatedAttendance/main.cpp"
click node_camera "https://github.com/movaid7/opencv_classattendance/blob/master/AutomatedAttendance/AutomatedAttendance/main.cpp"
click node_face_detection "https://github.com/movaid7/opencv_classattendance/blob/master/AutomatedAttendance/AutomatedAttendance/main.cpp"
click node_detection_helpers "https://github.com/movaid7/opencv_classattendance/blob/master/AutomatedAttendance/AutomatedAttendance/Globals.cpp"
click node_eye_alignment "https://github.com/movaid7/opencv_classattendance/blob/master/AutomatedAttendance/AutomatedAttendance/Detect.cpp"
click node_face_recognition "https://github.com/movaid7/opencv_classattendance/blob/master/AutomatedAttendance/AutomatedAttendance/main.cpp"
click node_model_improvement "https://github.com/movaid7/opencv_classattendance/blob/master/AutomatedAttendance/AutomatedAttendance/main.cpp"
click node_attendance_tracking "https://github.com/movaid7/opencv_classattendance/blob/master/AutomatedAttendance/AutomatedAttendance/main.cpp"
click node_daily_register "https://github.com/movaid7/opencv_classattendance/blob/master/AutomatedAttendance/AutomatedAttendance/main.cpp"
click node_student_records "https://github.com/movaid7/opencv_classattendance/blob/master/AutomatedAttendance/AutomatedAttendance/Register/Students.txt"
click node_trained_model "https://github.com/movaid7/opencv_classattendance/blob/master/AutomatedAttendance/AutomatedAttendance/trainedData.yml"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_menu,node_enrollment,node_register_lookup toneBlue
class node_camera,node_face_detection,node_detection_helpers,node_eye_alignment,node_face_recognition,node_model_improvement,node_trained_model toneAmber
class node_attendance_tracking,node_daily_register,node_student_records toneMint
class node_user,node_camera_device toneIndigo
```

## Components

### User interaction

- [Mode menu](https://github.com/movaid7/opencv_classattendance/blob/master/AutomatedAttendance/AutomatedAttendance/main.cpp): `AutomatedAttendance/AutomatedAttendance/main.cpp`
- [Student enrollment](https://github.com/movaid7/opencv_classattendance/blob/master/AutomatedAttendance/AutomatedAttendance/main.cpp): `AutomatedAttendance/AutomatedAttendance/main.cpp`
- [Register lookup](https://github.com/movaid7/opencv_classattendance/blob/master/AutomatedAttendance/AutomatedAttendance/main.cpp): `AutomatedAttendance/AutomatedAttendance/main.cpp`

### Vision and recognition

- [Webcam capture](https://github.com/movaid7/opencv_classattendance/blob/master/AutomatedAttendance/AutomatedAttendance/main.cpp): `AutomatedAttendance/AutomatedAttendance/main.cpp`
- [Face detection](https://github.com/movaid7/opencv_classattendance/blob/master/AutomatedAttendance/AutomatedAttendance/main.cpp): `AutomatedAttendance/AutomatedAttendance/main.cpp`
- [Cascade detection](https://github.com/movaid7/opencv_classattendance/blob/master/AutomatedAttendance/AutomatedAttendance/Globals.cpp): `AutomatedAttendance/AutomatedAttendance/Globals.cpp`
- [Face preprocessing](https://github.com/movaid7/opencv_classattendance/blob/master/AutomatedAttendance/AutomatedAttendance/Detect.cpp): `AutomatedAttendance/AutomatedAttendance/Detect.cpp`
- [Face recognition](https://github.com/movaid7/opencv_classattendance/blob/master/AutomatedAttendance/AutomatedAttendance/main.cpp): `AutomatedAttendance/AutomatedAttendance/main.cpp`
- [Model improvement](https://github.com/movaid7/opencv_classattendance/blob/master/AutomatedAttendance/AutomatedAttendance/main.cpp): `AutomatedAttendance/AutomatedAttendance/main.cpp`
- [Trained model data](https://github.com/movaid7/opencv_classattendance/blob/master/AutomatedAttendance/AutomatedAttendance/trainedData.yml): `AutomatedAttendance/AutomatedAttendance/trainedData.yml`

### Attendance records

- [Presence and lateness](https://github.com/movaid7/opencv_classattendance/blob/master/AutomatedAttendance/AutomatedAttendance/main.cpp): `AutomatedAttendance/AutomatedAttendance/main.cpp`
- [Daily register](https://github.com/movaid7/opencv_classattendance/blob/master/AutomatedAttendance/AutomatedAttendance/main.cpp): `AutomatedAttendance/AutomatedAttendance/main.cpp`
- [Student records](https://github.com/movaid7/opencv_classattendance/blob/master/AutomatedAttendance/AutomatedAttendance/Register/Students.txt): `AutomatedAttendance/AutomatedAttendance/Register/Students.txt`

### Other components

- **Operator**
- **Webcam**

## Connections

- Operator → Mode menu: selects mode (evidence: `AutomatedAttendance/AutomatedAttendance/main.cpp`)
- Webcam capture → Webcam: reads frames (evidence: `AutomatedAttendance/AutomatedAttendance/main.cpp`)
- Face detection → Cascade detection: detects faces (evidence: `AutomatedAttendance/AutomatedAttendance/main.cpp`)
- Face recognition → Presence and lateness: tracks identity (evidence: `AutomatedAttendance/AutomatedAttendance/main.cpp`)
- Presence and lateness → Daily register: writes attendance (evidence: `AutomatedAttendance/AutomatedAttendance/main.cpp`)
- Register lookup → Daily register: reads dated register (evidence: `AutomatedAttendance/AutomatedAttendance/main.cpp`)
- Student enrollment → Student records: appends student (evidence: `AutomatedAttendance/AutomatedAttendance/main.cpp`)
