# andreapittaluga99/computer-vision-in-30-days architecture

> Architecture diagram of the GitHub repository andreapittaluga99/computer-vision-in-30-days, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/andreapittaluga99/computer-vision-in-30-days
- Repository: https://github.com/andreapittaluga99/computer-vision-in-30-days

## Overview

This repository is a set of independent, day-organized computer-vision learning exercises rather than a single application. Its workflows demonstrate image and video transformations, color and face detection, and two image-classification training approaches. The graph keeps the exercises separate because the available source shows no shared runtime pipeline; some day-one capabilities are represented from their filenames in the tree, not sampled implementation.

Main entry points: [`day2/color_detector/main.py`](https://github.com/andreapittaluga99/computer-vision-in-30-days/blob/main/day2/color_detector/main.py) (Color Detector), [`day3/face_anonymizer/main.py`](https://github.com/andreapittaluga99/computer-vision-in-30-days/blob/main/day3/face_anonymizer/main.py) (Face Anonymizer), [`day5/image_classifier.py`](https://github.com/andreapittaluga99/computer-vision-in-30-days/blob/main/day5/image_classifier.py) (Pixel Classifier), [`day6/img_class_feat_extr.py`](https://github.com/andreapittaluga99/computer-vision-in-30-days/blob/main/day6/img_class_feat_extr.py) (Feature Classifier)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_fundamentals["Image Fundamentals"]
  node_day1_io_image["Image I/O<br/>[io_image.py]"]
  node_day1_io_video["Video Playback<br/>[io_video.py]"]
  node_day1_io_webcam["Webcam I/O<br/>[io_webcam.py]"]
  node_day1_color["Color Spaces<br/>[color_space.py]"]
  node_day1_crop["Cropping<br/>[crop.py]"]
  node_day1_resize["Resizing<br/>[resizing.py]"]
  node_day1_blur["Image Blurring<br/>[blur.py]"]
  node_day1_threshold["Thresholding<br/>[img_threshold.py]"]
  node_day1_edges["Edge Detection<br/>[edge_detector.py]"]
  node_day1_contours["Contour Finding<br/>[contours.py]"]
  node_day1_drawing["Image Drawing<br/>[drawing.py]"]
end

subgraph group_detection["Detection Demos"]
  node_day2_main["Color Detector<br/>[main.py]"]
  node_day2_utils["Color Limits<br/>[utils.py]"]
  node_face_model["Face Model"]
  node_face_anonymizer["Face Anonymizer<br/>[main.py]"]
end

subgraph group_learning["Image Classification"]
  node_day5_classifier["Pixel Classifier"]
  node_day5_model["Saved Classifier<br/>[model.p]"]
  node_day6_classifier["Feature Classifier"]
  node_day6_model["Saved Model<br/>[model.p]"]
end

node_learner(("Learner"))
node_image_input["Image Inputs"]
node_video_input["Video Input"]
node_camera(("Camera"))
node_face_image["Face Image"]
node_classifier_data["Labeled Images"]
node_weather_data["Weather Images"]

node_learner -->|"runs demo"| node_day1_io_image
node_image_input -->|"reads image"| node_day1_io_image
node_learner -->|"runs demo"| node_day1_io_video
node_video_input -->|"reads frames"| node_day1_io_video
node_learner -->|"runs demo"| node_day1_io_webcam
node_camera -->|"supplies frames"| node_day1_io_webcam
node_learner -->|"runs demo"| node_day1_color
node_image_input -->|"reads image"| node_day1_color
node_learner -->|"runs demo"| node_day1_crop
node_image_input -->|"reads image"| node_day1_crop
node_learner -->|"runs demo"| node_day1_resize
node_image_input -->|"reads image"| node_day1_resize
node_learner -->|"runs demo"| node_day1_blur
node_image_input -->|"reads image"| node_day1_blur
node_learner -->|"runs demo"| node_day1_threshold
node_image_input -->|"reads image"| node_day1_threshold
node_learner -->|"runs demo"| node_day1_edges
node_image_input -->|"reads image"| node_day1_edges
node_learner -->|"runs demo"| node_day1_contours
node_image_input -->|"reads image"| node_day1_contours
node_learner -->|"runs demo"| node_day1_drawing
node_image_input -->|"reads image"| node_day1_drawing
node_learner -->|"runs detector"| node_day2_main
node_camera -->|"supplies frames"| node_day2_main
node_day2_main -->|"gets color limits"| node_day2_utils
node_learner -->|"runs anonymizer"| node_face_anonymizer
node_face_image -->|"reads image"| node_face_anonymizer
node_face_anonymizer -->|"loads model"| node_face_model
node_learner -->|"runs training"| node_day5_classifier
node_classifier_data -->|"supplies labeled images"| node_day5_classifier
node_day5_classifier -->|"writes model"| node_day5_model
node_learner -->|"runs training"| node_day6_classifier
node_weather_data -->|"supplies images"| node_day6_classifier
node_day6_classifier -->|"writes model"| node_day6_model

click node_day1_io_image "https://github.com/andreapittaluga99/computer-vision-in-30-days/blob/main/day1/io_image.py"
click node_day1_io_video "https://github.com/andreapittaluga99/computer-vision-in-30-days/blob/main/day1/io_video.py"
click node_day1_io_webcam "https://github.com/andreapittaluga99/computer-vision-in-30-days/blob/main/day1/io_webcam.py"
click node_day1_color "https://github.com/andreapittaluga99/computer-vision-in-30-days/blob/main/day1/color_space.py"
click node_day1_crop "https://github.com/andreapittaluga99/computer-vision-in-30-days/blob/main/day1/crop.py"
click node_day1_resize "https://github.com/andreapittaluga99/computer-vision-in-30-days/blob/main/day1/resizing.py"
click node_day1_blur "https://github.com/andreapittaluga99/computer-vision-in-30-days/blob/main/day1/blur.py"
click node_day1_threshold "https://github.com/andreapittaluga99/computer-vision-in-30-days/blob/main/day1/img_threshold.py"
click node_day1_edges "https://github.com/andreapittaluga99/computer-vision-in-30-days/blob/main/day1/edge_detector.py"
click node_day1_contours "https://github.com/andreapittaluga99/computer-vision-in-30-days/blob/main/day1/contours.py"
click node_day1_drawing "https://github.com/andreapittaluga99/computer-vision-in-30-days/blob/main/day1/drawing.py"
click node_day2_main "https://github.com/andreapittaluga99/computer-vision-in-30-days/blob/main/day2/color_detector/main.py"
click node_day2_utils "https://github.com/andreapittaluga99/computer-vision-in-30-days/blob/main/day2/color_detector/utils.py"
click node_face_model "https://github.com/andreapittaluga99/computer-vision-in-30-days/blob/main/day3/models/blaze_face_short_range.tflite"
click node_face_anonymizer "https://github.com/andreapittaluga99/computer-vision-in-30-days/blob/main/day3/face_anonymizer/main.py"
click node_day5_classifier "https://github.com/andreapittaluga99/computer-vision-in-30-days/blob/main/day5/image_classifier.py"
click node_day5_model "https://github.com/andreapittaluga99/computer-vision-in-30-days/blob/main/day5/model.p"
click node_day6_classifier "https://github.com/andreapittaluga99/computer-vision-in-30-days/blob/main/day6/img_class_feat_extr.py"
click node_day6_model "https://github.com/andreapittaluga99/computer-vision-in-30-days/blob/main/day6/model.p"

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_day1_io_image,node_day1_io_video,node_day1_io_webcam,node_day1_color,node_day1_crop,node_day1_resize,node_day1_blur,node_day1_threshold,node_day1_edges,node_day1_contours,node_day1_drawing toneBlue
class node_day2_main,node_day2_utils,node_face_model,node_face_anonymizer toneAmber
class node_day5_classifier,node_day5_model,node_day6_classifier,node_day6_model toneMint
class node_learner,node_image_input,node_video_input,node_camera,node_face_image,node_classifier_data,node_weather_data toneIndigo
```

## Components

### Image Fundamentals

- [Image I/O](https://github.com/andreapittaluga99/computer-vision-in-30-days/blob/main/day1/io_image.py): `day1/io_image.py`
- [Video Playback](https://github.com/andreapittaluga99/computer-vision-in-30-days/blob/main/day1/io_video.py): `day1/io_video.py`
- [Webcam I/O](https://github.com/andreapittaluga99/computer-vision-in-30-days/blob/main/day1/io_webcam.py): `day1/io_webcam.py`
- [Color Spaces](https://github.com/andreapittaluga99/computer-vision-in-30-days/blob/main/day1/color_space.py): `day1/color_space.py`
- [Cropping](https://github.com/andreapittaluga99/computer-vision-in-30-days/blob/main/day1/crop.py): `day1/crop.py`
- [Resizing](https://github.com/andreapittaluga99/computer-vision-in-30-days/blob/main/day1/resizing.py): `day1/resizing.py`
- [Image Blurring](https://github.com/andreapittaluga99/computer-vision-in-30-days/blob/main/day1/blur.py): `day1/blur.py`
- [Thresholding](https://github.com/andreapittaluga99/computer-vision-in-30-days/blob/main/day1/img_threshold.py): `day1/img_threshold.py`
- [Edge Detection](https://github.com/andreapittaluga99/computer-vision-in-30-days/blob/main/day1/edge_detector.py): `day1/edge_detector.py`
- [Contour Finding](https://github.com/andreapittaluga99/computer-vision-in-30-days/blob/main/day1/contours.py): `day1/contours.py`
- [Image Drawing](https://github.com/andreapittaluga99/computer-vision-in-30-days/blob/main/day1/drawing.py): `day1/drawing.py`

### Detection Demos

- [Color Detector](https://github.com/andreapittaluga99/computer-vision-in-30-days/blob/main/day2/color_detector/main.py): `day2/color_detector/main.py`
- [Color Limits](https://github.com/andreapittaluga99/computer-vision-in-30-days/blob/main/day2/color_detector/utils.py): `day2/color_detector/utils.py`
- [Face Model](https://github.com/andreapittaluga99/computer-vision-in-30-days/blob/main/day3/models/blaze_face_short_range.tflite): `day3/models/blaze_face_short_range.tflite`
- [Face Anonymizer](https://github.com/andreapittaluga99/computer-vision-in-30-days/blob/main/day3/face_anonymizer/main.py): `day3/face_anonymizer/main.py`

### Image Classification

- [Pixel Classifier](https://github.com/andreapittaluga99/computer-vision-in-30-days/blob/main/day5/image_classifier.py): `day5/image_classifier.py`
- [Saved Classifier](https://github.com/andreapittaluga99/computer-vision-in-30-days/blob/main/day5/model.p): `day5/model.p`
- [Feature Classifier](https://github.com/andreapittaluga99/computer-vision-in-30-days/blob/main/day6/img_class_feat_extr.py): `day6/img_class_feat_extr.py`
- [Saved Model](https://github.com/andreapittaluga99/computer-vision-in-30-days/blob/main/day6/model.p): `day6/model.p`

### Other components

- **Learner**
- **Image Inputs**
- **Video Input**
- **Camera**
- **Face Image**
- **Labeled Images**
- **Weather Images**

## Connections

- Learner → Image I/O: runs demo
- Image Inputs → Image I/O: reads image
- Learner → Video Playback: runs demo
- Video Input → Video Playback: reads frames
- Learner → Webcam I/O: runs demo
- Camera → Webcam I/O: supplies frames
- Learner → Color Spaces: runs demo
- Image Inputs → Color Spaces: reads image
- Learner → Cropping: runs demo
- Image Inputs → Cropping: reads image
- Learner → Resizing: runs demo
- Image Inputs → Resizing: reads image
- Learner → Image Blurring: runs demo
- Image Inputs → Image Blurring: reads image
- Learner → Thresholding: runs demo
- Image Inputs → Thresholding: reads image
- Learner → Edge Detection: runs demo
- Image Inputs → Edge Detection: reads image
- Learner → Contour Finding: runs demo
- Image Inputs → Contour Finding: reads image
- Learner → Image Drawing: runs demo
- Image Inputs → Image Drawing: reads image
- Learner → Color Detector: runs detector
- Camera → Color Detector: supplies frames
- Color Detector → Color Limits: gets color limits
- Learner → Face Anonymizer: runs anonymizer
- Face Image → Face Anonymizer: reads image
- Face Anonymizer → Face Model: loads model
- Learner → Pixel Classifier: runs training
- Labeled Images → Pixel Classifier: supplies labeled images
- Pixel Classifier → Saved Classifier: writes model
- Learner → Feature Classifier: runs training
- Weather Images → Feature Classifier: supplies images
- Feature Classifier → Saved Model: writes model
