Retourner l'image de sa webcam
En utilisant des outils de visioconférence pour des réunions de mon fablab, j’apparais avec la tête à l’envers.
Mon ordinateur tourne sur un système gnu/linux et plus précisément une distribution debian.
Naturellement, si je pique l’ordinateur de mon épouse qui (pas mon épouse, l’ordinateur) tourne sur Windows 7, je n’ai pas ce problème. Naturellement.
Voici donc le récit d’un fiasco.
L’option vflip est la solution espérée
J’ai vu sur Internet qu’une façon élégante de traiter le sujet était l’option vflip du programme qui pilote la caméra. Il faut donc d’abord identifier ce programme. Pour ce faire nous utilisons la commande udevadm et la couplons à grep :
udevadm info --query=all --name=/dev/video0 | grep DRIVER
Je constate ainsi que mon driver (le pilote de ma caméra) est uvcvideo. Ce n’est pas une mauvaise chose, c’est un pilote très réputé et répandu sous Linux.
Cependant, il ne supporte pas l’option vlip.
Pour le confirmer, il me suffit d’utiliser le programme v4l-info du package v4l-conf. En tapant, sans autre précision,
v4l-info
j’obtiens entre autres la liste des paramètres sur lesquels je peux jouer : Brightness, Contrast, etc. Mais pas de vflip.
Saperlipopette !
Utiliser v4l2 ?
Le même article propose alors d’exporter une valeur pour l’orientation verticale de l’image à travers la librairie v4l2 qui gère l’acquisition vidéo sous Linux.
Il serait alors possible de retourner l’image en tapant
export LIBV4LCONTROL_FLAGS=3
ou, alternativement,
export LIBV4LCONTROL_FLAGS=1
puis de vérifier le résultat à travers le programme guvcview. Cependant avant même de toucher aux LIBV4LCONTROL_FLAGS, je lance
guvcview
et là, mon image est à l’endroit !
La fièvre me gagne. Les mains tremblante, je lance le programme
cheese
et j’ai la tête à l’envers.
Incroyable ! Je tape encore
xawtv -c /dev/video0
et j’ai la tête à l’endroit !
Désespéré, je tape
vlc v4l2:// :input-slave=alsa:// :v4l-vdev="/dev/video0"
et la tête est encore à l’endroit. (J’aurais pu aussi utiliser l’option ouvrir un périphérique de capture dans le menu Media de VLC.)
Je tente alors
mpv av://v4l2:/dev/video0
et la tête est à l’envers.
Sapristi !
Je résume en restant perplexe :
programme | tête à l’envers | tête à l’endroit |
---|---|---|
guvcview | oui | |
cheese | oui | |
xawtv | oui | |
vlc | oui | |
mpv | oui |
Voyons ce qui se passe si je fais varier LIBV4LCONTROL_FLAGS à 1 ou à 3 :
programme | flag à 1 | flag à 3 |
---|---|---|
guvcview | envers | endroit |
cheese | envers | envers |
xawtv | envers | endroit |
vlc | envers | endroit |
mpv | envers | envers |
Ainsi, que LIBV4LCONTROL_FLAGS soit à 1 ou à 3, mon image sera toujours à l’envers pour cheese et mpv.
Pour les autres programmes (guvcview, xawtv et vlc), un flag à 1 donne une image à l’envers tandis qu’un flag à 3 donne une image à l’endroit.
Comme tout ceci est lassant ! Je n’avais pas ces problèmes avec ma HP-34C, il m’en souvient. Allez,
isel eo an douar
comme on dit dans l’Assimil. Et bonne journée.
Dernière modification: 20 avril 2020
Établi: 8 avril 2020