# Vision par ordinateur (Édition Python)

---

## Prérequis

- Ordinateur fixe ou portable, architecture de processeur x86/AMD64
- Système d'exploitation Linux
- Python 3.13.2

```bash
sudo apt install -y make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev \
libffi-dev liblzma-dev tk-dev libncurses5-dev libncursesw5-dev

# Où

sudo dnf install gcc zlib-devel bzip2 bzip2-devel readline-devel \
sqlite sqlite-devel openssl-devel xz xz-devel libffi-devel \
findutils tk-devel ncurses-devel
```
```bash
curl -fsSL https://pyenv.run | bash

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo '[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init - bash)"' >> ~/.bashrc
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc

pyenv install 3.13.2
cd répertoire/du/projet
pyenv local 3.13.2
```

---
Créer un environnement virtuel Python.
```bash
python -m venv venv
```
Activer l'environnement virtuel au terminal courant.
```bash
source venv/bin/activate
```
Mettre à jour Pip (pour éviter les erreurs d'installation de librairies).
```bash
pip install --upgrade pip
```
Installer les librairies nécessaires au déroulement du programme.
```bash
pip install -r requirements.txt
```
Exécuter le dialogue d'aide sur le programme principale.
```bash
> python main.py --help
usage: main.py [-h] [-i INPUT] [-o OUTPUT] [-f] [-u API_URL] [-m MODELNAME] [-v]

options:
  -i, --input INPUT     Chemin vers la vidéo à lire ('0' est à utiliser pour la webcam par défaut)
  -o, --output OUTPUT   Emplacement pour enregistrer le processus dans une vidéo (Attention au RGPD, désactivé si aucun)
  -f, --force           Forcer le redimensionnement du flux d'entrée.
  -u, --api-url API_URL
                        Chemin réseau vers l'API (désactivé si aucun)
  -m, --model MODELNAME
                        Nom complet (ou chemin) du modèle de détection à utiliser
  -v, --verbose         Activer la sortie verbeuse du programme.
```

---

## Démarrage automatique

Dans le répertoire source du projet, il y a un script bash permettant l'installation et le démarrage automatique.
Il faut d'abord essayer le programme manuellement (avec les instructions précédentes). Si le programme est satisfaisant, le script d'auto-installation est pertinent.

Exécuter le script
```bash
./auto-install.sh
```

Le script propose quels paramètres sont à activer automatiquement (pour l'exécution à l'ouverture de la session)
```bash
> ./autoinstall.sh
Voulez-vous indiquer un flux d'entrée ? (oui/non): oui
Entrez la valeur d'entrée : 4
Voulez-vous une verbosité accrue ? (oui/non): non
Voulez-vous forcer le redimenssionnement de l'image ? (oui/non): oui
Voulez-vous renseigner l'URL de l'API ? (oui/non): oui
Entrez l'URL de l'API : http://localhost:1880
```

Redémarrer l'ordinateur hôte.
```bash
sudo reboot now
```

En cas d'erreurs ou de doutes, regarder la journalisation.
```bash
less ~/vision-par-ordinateur-python/main.log
```
