Compare commits
No commits in common. "gphoto" and "picamera_support" have entirely different histories.
gphoto
...
picamera_s
13
config.toml
13
config.toml
|
@ -1,6 +1,6 @@
|
|||
[DEFAULT]
|
||||
# Camera type - can be : showmewebcam, picam, webcam, dslr
|
||||
cam_type = 'webcam'
|
||||
cam_is_picam = true
|
||||
cam_is_showmewebcam = false
|
||||
use_date_for_folder = false
|
||||
file_extension = 'jpg'
|
||||
jpg_quality = 88
|
||||
|
@ -8,15 +8,14 @@ projects_folder = ''
|
|||
onion_skin_onstartup = true
|
||||
onionskin_alpha_default = 0.5
|
||||
fullscreen_bool = true
|
||||
screen_w = 1920
|
||||
screen_h = 1080
|
||||
screen_w = 1440
|
||||
screen_h = 900
|
||||
framerate = 16
|
||||
ffmpeg_path = '/usr/bin/ffmpeg'
|
||||
v4l2-ctl_path = '/usr/bin/v4l2-ctl'
|
||||
export_options = 'scale=1920:-1,crop=1920:1080'
|
||||
[CAMERA]
|
||||
cam_w = 1280
|
||||
cam_h = 960
|
||||
cam_w = 1920
|
||||
cam_h = 1080
|
||||
vflip = 0
|
||||
hflip = 0
|
||||
auto_exposure = 1
|
||||
|
|
820
frame_opencv.py
820
frame_opencv.py
File diff suppressed because it is too large
Load Diff
118
readme.md
118
readme.md
|
@ -1,52 +1,28 @@
|
|||
# Stopi2
|
||||
|
||||
## Branche gphoto / réflexe numérique
|
||||
## Branche libcamera
|
||||
|
||||
**Ceci est la branche qui restaure la possibilité d'utiliser des périphériques compatibles [gphoto](http://gphoto.org/doc/remote).**
|
||||
**Ceci est la branche qui restaure la possibilité d'utiliser des périphériques compatibles rpi-libcamera (Modules Raspicam v1,v2 et v3).**
|
||||
**En utilisant la [branche correspondante pour la télécommande picote](/arthus/picote/src/branch/picamera), vous pouvez régler la mise au point du module caméra avec un [codeur rotatif](https://fr.wikipedia.org/wiki/Codeur_rotatif).**
|
||||
|
||||
<a style="max-height: 300px;display: inline-block;" href="./stopi2/raw/branch/master/stopi_station.jpg"><img src="./stopi_station.jpg"/><a/>
|
||||
|
||||
Seconde version du script python [stopi](https://git.arthus.net/arthus/stopi) destiné à être utilisé avec une télécommande [picote](/arthus/picote/src/branch/picamera).
|
||||
|
||||
Cette version utilise opencv, libcamera et gphoto.
|
||||
Elle fonctionne avec une webcam, un module vidéo Picamera (v1,v2 ou v3) ou un réflexe numérique.
|
||||
|
||||
Cette version utilise opencv et libcamera.Elle fonctionne avec une webcam ou un module vidéo Picamera (v1,v2 ou v3).
|
||||
Encore une fois, l'objectif est de créer un logiciel simple et minimaliste dans son interface, dont les caractéristiques sont les suivantes :
|
||||
|
||||
* Affichage des images en plein écran sans interface : toutes les fonctions utilisent quelques touches du clavier.
|
||||
* [Pelure d'oignon](https://fr.wikipedia.org/wiki/Pelure_d'oignon#Sciences_et_techniques) entre la dernière image et le flux vidéo.
|
||||
* Un seul [fichier de configuration](/arthus/stopi2/wiki/configuration) permet de régler les options (résolution, images/secondes, mirroir vertical/horizontal, )
|
||||
* Un seul fichier de configuration permet de régler les options (résolution, images/secondes, mirroir vertical/horizontal, )
|
||||
* Auto configuration de la camera au démarrage (exposition et balance des blancs)
|
||||
* Pilotage de certains réglages de la caméra depuis la télécommande/clavier (balance des blancs, rotation de l'image, mise au point (picam V3), exposition...)
|
||||
* Prévisualisation de l'animation
|
||||
* Exportation vidéo avec [ffmpeg](https://ffmpeg.org/)
|
||||
* Interface localisée (anglais et français disponible pour le moment.)
|
||||
|
||||
## Banc de test
|
||||
|
||||
Ce script a été testé avec une webcam compatible V4L2, une ["showmewebcam"](https://github.com/showmewebcam/showmewebcam) à base de rpi 0 et d'un module caméra v2 (8Mp), et un ordinateur classique sous [Debian](https://debian.org), ainsi qu'avec un [RPI 4B](https://www.raspberrypi.com/products/raspberry-pi-4-model-b/) munis d'un module [Picamera V3](https://www.raspberrypi.com/products/camera-module-3/).
|
||||
|
||||
Voici un récapitulatif des tests effectués :
|
||||
|
||||
| Machine \ Type de Caméra | Webcam | [Showmewebcam](https://github.com/showmewebcam/showmewebcam) | RPI Caméra module V1 (5MP) | [RPI Caméra module V3](https://www.raspberrypi.com/products/camera-module-3/) (12MP) | [Réflexe numérique](http://gphoto.org/doc/remote) (Nikon D3000/D40x)|
|
||||
| --- | --- | --- | --- | --- | --- |
|
||||
| Raspberry Pi 3B+ (Debian 12) | ✓ | ✓ | ✓ | ✓ | ✓ |
|
||||
| Raspberry Pi 4B (Debian 12) | ✓ | ✓ | ✓ | ✓ | ✓ |
|
||||
| PC Linux (Debian, Manjaro) | ✓ | ✓ | N/A | N/A | ✓ |
|
||||
|
||||
## Documentation
|
||||
|
||||
La documentation est disponible [dans le wiki](/arthus/stopi2/wiki/).
|
||||
|
||||
## Feuille de route
|
||||
|
||||
Des fonctions supplémentaires sont prévues :
|
||||
|
||||
* Mise à jour de la traduction FR
|
||||
* Réflexe numérique: utilisation du liveview de l'appareil (si je trouve un modèle compatible pour le développement)
|
||||
|
||||
## Contributions
|
||||
|
||||
Ce script a été testé avec une webcam compatible V4L2, une ["showmewebcam"](https://github.com/showmewebcam/showmewebcam) à base de rpi 0 et d'un module caméra v2 (8Mp), et un ordinateur classique sous [Debian](https://debian.org) et un [RPI 4B](https://www.raspberrypi.com/products/raspberry-pi-4-model-b/) munis d'un module [Picamera V3](https://www.raspberrypi.com/products/camera-module-3/).
|
||||
Les contributions et rapports de bugs sont les bienvenus !
|
||||
|
||||
## Installation
|
||||
|
@ -57,21 +33,18 @@ Dans un terminal :
|
|||
1. Installer les dépendances suivantes :
|
||||
```
|
||||
# Avec une distribution basée sur Debian (Ubuntu, Mint...)
|
||||
sudo apt install --no-install-recommends --no-install-suggests git ffmpeg python3-pip python3-venv libtiff5-dev libopenjp2-7 libopenjp2-7-dev zlib1g-dev libfreetype6-dev liblcms2-dev libwebp-dev tcl8.6-dev tk8.6-dev libharfbuzz-dev libfribidi-dev libxcb1-dev python3-tk python3-dev libopenblas-dev libatlas-base-dev libhdf5-dev libhdf5-serial-dev libatlas-base-dev libjasper-dev v4l-utils
|
||||
sudo apt install --no-install-recommends --no-install-suggests git ffmpeg python3-tk python3-pip python3-venv libtiff5-dev libtopenjp2 libopenjp2-7-dev zlib1g-dev libfreetype6-dev liblcms2-dev libwebp-dev tcl8.6-dev tk8.6-dev libharfbuzz-dev libfribidi-dev libxcb1-dev python3-tk python3-dev libopenblas-dev libatlas-base-dev libhdf5-dev libhdf5-serial-dev libatlas-base-dev libjasper-dev libqtgui4 libqt4-test
|
||||
```
|
||||
- (Optionnel) Pour installer un environnement graphique minimal sur une [installation console](https://debian-facile.org/doc:install:installation-minimale) : `sudo apt install --no-install-recommends --no-install-suggests openbox xserver-xorg xinit pcmanfm gmrun lxterminal hsetroot unclutter plymouth plymouth-themes`
|
||||
2. Cloner le dépôt dans le dossier de votre choix : `git clone https://git.arthus.net/arthus/stopi2.git`
|
||||
3. Aller dans répertoire du projet : `cd stopi2`
|
||||
4. Créer un environnement virtuel (venv) Python : `python -m venv ./`
|
||||
- Mise à jour de l'environnement pypi: '`MAKEFLAGS="-j$(nproc)" pip install -vvv --upgrade pip setuptools wheel`
|
||||
- (Optionnel) Dans le cas de l'utilisation d'une "raspicam", il faudra ajouter le paramètre `--system-site-packages` pour avoir accès au module picamera2, et installer la librairie correspondante `python3-picamera2`.
|
||||
5. Activer l'environnement virtuel avec `source bin/activate`
|
||||
6. Installer les dépendances python (~150Mo) : `MAKEFLAGS="-j$(nproc)" pip install -r requirements.txt`
|
||||
6. Installer les dépendances python (~150Mo) : `pip install -r requirements.txt`
|
||||
7. Activer l'éxécution du script : `chmod +x stopi2.sh`
|
||||
8. Lancer le script : `./stopi2.sh`
|
||||
|
||||
[Voir le wiki pour plus de détails](/arthus/stopi2/wiki/python_environnement)
|
||||
|
||||
## Fonction par touches
|
||||
|
||||
L'idéal est d'utiliser une télécommande [picote](/arthus/picote) mais le logiciel est aussi pilotable via un clavier/clavier numérique.
|
||||
|
@ -95,18 +68,75 @@ L'idéal est d'utiliser une télécommande [picote](/arthus/picote) mais le logi
|
|||
| Afficher seulement le flux vidéo | ② | touche L ou 3 sur le clavier numérique |
|
||||
| Rotation de 180° de la capture vidéo | Alt + ② | touche F ou 5 sur le clavier numérique |
|
||||
|
||||
Si vous utilisez une télécommande [picote avec un encodeur rotatif (ou potar)](/arthus/picote/src/branch/picamera), les fonctions suivantes sont également disponibles :
|
||||
|
||||
| Fonction | Boutton | Clavier |
|
||||
| --- | --- | --- |
|
||||
| Mise au point - | ↶ | touche A |
|
||||
| Mise au point + | ↷ | touche Z |
|
||||
| Mode anti-flicker | Alt+↶ | touche Q |
|
||||
|
||||
## Installation Kiosque
|
||||
|
||||
[Voir le wiki](/arthus/stopi2/wiki/kiosk)
|
||||
Pour créer un kiosque d'animation à partir d'une installation minimale de Debian :
|
||||
1. Installer Debian pour un environnement console avec environnement graphique minimal, par exemple:
|
||||
```sudo apt install --no-install-recommends --no-install-suggests openbox xserver-xorg xinit hsetroot unclutter```
|
||||
2. Suivre les [étapes d'installation](#installation) ci-dessus.
|
||||
3. Activer le login automatique de votre utilisateur au démarrage :
|
||||
```
|
||||
sudo systemctl edit getty@tty1.service
|
||||
# Ajout du contenu suivant dans le fichier créé:
|
||||
[Service]
|
||||
ExecStart=
|
||||
ExecStart=-/sbin/agetty -o '-p -f -- \\u' --skip-login --nonewline --noissue --noclear --autologin arthus %I $TERM
|
||||
```
|
||||
4. Ajouter ce contenu à '~/.bash_login' :
|
||||
```
|
||||
if [ -z "$DISPLAY" ] && [ "$XDG_VTNR" = 1 ]; then
|
||||
exec startx &>/dev/null
|
||||
fi
|
||||
```
|
||||
5. Ajouter ce contenu à '~/.xinitrc' :
|
||||
```
|
||||
#!/bin/sh
|
||||
|
||||
# /etc/X11/xinit/xinitrc
|
||||
#
|
||||
# global xinitrc file, used by all X sessions started by xinit (startx)
|
||||
|
||||
# invoke global X session script
|
||||
. /etc/X11/Xsession
|
||||
|
||||
exec openbox-session
|
||||
```
|
||||
6. Ajouter ce contenu à '~/.config/openbox/autostart.sh' :
|
||||
```
|
||||
#!/bin/env bash
|
||||
# Change X keyboard mapping
|
||||
setxkbmap fr
|
||||
# Set background color
|
||||
hsetroot -solid "#8393CC"
|
||||
# Hide mouse after 0.2 seconds
|
||||
unclutter -idle 0.2 &
|
||||
# Start script
|
||||
/home/$USER/stopi2.sh &
|
||||
```
|
||||
|
||||
Au redémarrage, la session graphique devrait démarrer automatiquement.
|
||||
|
||||
# Démarrage 'silencieux'
|
||||
|
||||
[Voir le wiki](/arthus/stopi2/wiki/demarrage_silencieux)
|
||||
Pour un démarrage sans aucun texte avant la session graphique, ajouter les lignes suivantes à `/etc/default/grub` :
|
||||
```
|
||||
GRUB_HIDDEN_TIMEOUT=5
|
||||
GRUB_HIDDEN_TIMEOUT_QUIET=true
|
||||
GRUB_GFXMODE=1920x1080
|
||||
```
|
||||
et modifier la ligne :
|
||||
`GRUB_CMDLINE_LINUX_DEFAULT="quiet`
|
||||
en :
|
||||
`GRUB_CMDLINE_LINUX_DEFAULT="quiet splash loglevel=3`
|
||||
|
||||
Puis configurer plymouth : `sudo plymouth-set-default-theme`
|
||||
|
||||
Appliquer les modifs avec `sudo update-grub`.
|
||||
|
||||
## Raspberry Pi OS
|
||||
|
||||
Avec Raspberry Pi OS, il suffit d'ajouter les options suivantes dans '/boot/firmware/cmdline.txt':
|
||||
`loglevel=3 vt.global_cursor_default=0 logo.nologo consoleblank=3 quiet`
|
||||
|
||||
``
|
|
@ -3,4 +3,3 @@ numpy
|
|||
pyserial
|
||||
pillow
|
||||
opencv-python
|
||||
gphoto2
|
||||
|
|
|
@ -9,9 +9,6 @@ def find_cam_port():
|
|||
return None
|
||||
|
||||
def send_serial_cmd(cam_port, cmd:str, clear=True):
|
||||
if cam_port is None:
|
||||
print("No com. port found.")
|
||||
return False
|
||||
con = serial.Serial(cam_port, baudrate=115200)
|
||||
if clear:
|
||||
append = b'\rclear\r'
|
||||
|
@ -19,11 +16,3 @@ def send_serial_cmd(cam_port, cmd:str, clear=True):
|
|||
append = b'\r'
|
||||
con.write(str.encode(cmd) + append)
|
||||
con.close()
|
||||
|
||||
def main():
|
||||
cmd = "/usr/bin/v4l2-ctl --all"
|
||||
send_serial_cmd(find_cam_port(), cmd)
|
||||
|
||||
if __name__ == '__main__':
|
||||
import sys
|
||||
sys.exit(main())
|
||||
|
|
Loading…
Reference in New Issue