#1 Le 21/12/2024, à 16:21
- vin100vin
[RESOLU] v4l2, Camset réglages d'une webcam Logitech C920 Pro
Ma webcam webcam0 (Logitech C920 Pro) donne une image grand angle qui ne convient pas aux visio conférences et le soft de Logitech ne marche pas sur Linux
Donc j'essaye de trouver une manière de régler cela autrement.
Dans les softs classique (cheese) j'ai pas trouvé...
Je mets ci-dessous mes questions et solutions partielles que j'ai trouvé
Question 1
Le programme Camset semble régler cela.
https://pypi.org/project/camset/
https://www.juggling.ch/gisin/linux/v4l2.html
Mais j'ai une erreur à l'install
Une idée ?
pip3 install camset
error: externally-managed-environment
× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
python3-xyz, where xyz is the package you are trying to
install.
If you wish to install a non-Debian-packaged Python package,
create a virtual environment using python3 -m venv path/to/venv.
Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
sure you have python3-full installed.
If you wish to install a non-Debian packaged Python application,
it may be easiest to use pipx install xyz, which will manage a
virtual environment for you. Make sure you have pipx installed.
See /usr/share/doc/python3.12/README.venv for more information.
note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.
Solution provisoire
Utiliser en ligne de commande v4l2
https://christitus.com/logitech-c920-linux-driver/
Et de fait avec la commande suivante, je fais un zoom de 150%
v4l2-ctl -d /dev/video2 --set-ctrl zoom_absolute=150
Question 2
Si je ne trouve pas d'interface GIU pour régler cela, où trouver (et comprendre) les spécificités aux nombreux réglages possibles via v4l2 en ligne de commande et alors, comment créer un scrip qui ne m'oblige pas à lancer la/les lignes de code à chaque session de vidéoconférence
D'avance merci
Dernière modification par vin100vin (Le 22/12/2024, à 16:23)
Xubuntu 24.04 sur ThinkPad P14s Gen 2 // Xubuntu 24.04 LTS sur LDLC Aurore NJ5S-16-S9
Hors ligne
#2 Le 21/12/2024, à 16:30
- xubu1957
Re : [RESOLU] v4l2, Camset réglages d'une webcam Logitech C920 Pro
Bonjour,
Si tu trouves des pistes dans gitlab.unimelb.edu.au/jli15/asclinic-system/-/blob/encoder_counts_multi_threaded/docs/software/workflow_usb_camera_settings.rst
ou kurokesu.com/main/2016/01/16/manual-usb-camera-settings-in-linux
Conseils pour les nouveaux demandeurs et pas qu'eux
Important : Pensez à passer vos sujets en [Réso|u] lorsque ceux-ci le sont, au début du titre en cliquant sur Modifier sous le premier message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci. Membre de Linux-Azur
Hors ligne
#3 Le 21/12/2024, à 16:49
- vin100vin
Re : [RESOLU] v4l2, Camset réglages d'une webcam Logitech C920 Pro
Merci @xubu1957
Si maintenant quelqu'un avait une solution GIU et/ou un script qui ne m'oblige pas à ouvrir mon terminal à chaque vidéo conférence...
Xubuntu 24.04 sur ThinkPad P14s Gen 2 // Xubuntu 24.04 LTS sur LDLC Aurore NJ5S-16-S9
Hors ligne
#4 Le 21/12/2024, à 16:58
- xubu1957
Re : [RESOLU] v4l2, Camset réglages d'une webcam Logitech C920 Pro
Et avec guvcview ?
Conseils pour les nouveaux demandeurs et pas qu'eux
Important : Pensez à passer vos sujets en [Réso|u] lorsque ceux-ci le sont, au début du titre en cliquant sur Modifier sous le premier message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci. Membre de Linux-Azur
Hors ligne
#5 Le 21/12/2024, à 17:17
- vin100vin
Re : [RESOLU] v4l2, Camset réglages d'une webcam Logitech C920 Pro
Non, j'ai constamment une erreur quand j'essaye de passer vers Zoom par exemple c'est comme s'il fallait utiliser Guvcviewer seul
Dernière modification par vin100vin (Le 21/12/2024, à 17:21)
Xubuntu 24.04 sur ThinkPad P14s Gen 2 // Xubuntu 24.04 LTS sur LDLC Aurore NJ5S-16-S9
Hors ligne
#6 Le 21/12/2024, à 23:45
- tycooon
Re : [RESOLU] v4l2, Camset réglages d'une webcam Logitech C920 Pro
Bonsoir,
L'installation a été réalisée en s'inspirant de ce site : https://www.juggling.ch/gisin/linux/v4l2.html
Après plusieurs essais , je suis arrivé au bout :
sudo apt install python3 python3-pip v4l-utils pkg-config
sudo apt install python3-venv
sudo apt install gobject-introspection libgirepository1.0-dev
python3 -m venv monenv
source monenv/bin/activate
Attention, c'est relativement long à installer :
pip install camset
Attention tu es maintenant dans monenv : (monenv) olivier@olivier-VMware-Virtual-Platform:~$
cd ~/monenv/lib/python3.12/site-packages/camset/
"BG" sont les initiales de l'auteur à l'origine de cette procédure. Vous mettez le nom qui vous convient. Il faudra juste penser à reporter la modification de la nouvelle appellation du script, qui est appelée dans les commandes dans la suite de la procédure.
cp camset.py camsetBG.py
Attention il faut modifier le fichier :camsetBG.py
nano camsetBG.py
Modification de ces lignes , elle doivent être comme ceci en rouge :
#!/usr/bin/python3
# -*- coding: utf-8 -*-import gi
import subprocess
import pathlib
import osgi.require_version('Gtk', '3.0')
from gi.repository import Gtk
from cam_window import CamWindow
from dialogs import Dialogs
from helpers import Helpers
from v4l2control import V4L2Control
from layout import Layout
chmod u=rwx,g=rw,o=r camsetBG.py
Attention, ces 2 commandes ci dessous prennent du temps à s'installer :
pip install opencv-python
La commande ci dessous, n'est probablement pas nécessaire. C'est une variante de la commande du dessus pour une utilisation : Serveur, Docker, environnements sans GUI,
pip install opencv-python-headless
Attention le script python3 camsetBG.py, ne fonctionne qui si l'environnement est activé.
A ce niveau tu peux lancer le script, cela fonctionne. par contre si tu rebootes, il faudra réactiver l'environnement .
python3 camsetBG.py
Si l'environnement est activé, la commande ci dessous désactive l'environnement :
deactivate
Pour relancer le script :
source ~/monenv/bin/activate
python3 camsetBG.py
Pour simplifier les choses , j'ai fait un script qui lance l'environnement et le script :
nano run_camset.sh
Tu ajoutes ces lignes :
#!/bin/bash
# Activer l'environnement virtuel
source ~/monenv/bin/activate# Exécuter le script Python
python3 ~/monenv/lib/python3.12/site-packages/camset/camsetBG.py# Désactiver l'environnement virtuel après l'exécution
deactivate
chmod +x run_camset.sh
Tu n'as plus qu'à lancer le script :
./run_camset.sh
Le script ouvre une inerface pour régler ta caméra :
Tu pourras créer un fichier "desktop" qui lancera le script depuis le menu en cliquant sur un icone.
Ci joint mes logs d'installation , pour bien suivre le fil des instructions :
olivier@olivier-VMware-Virtual-Platform:~$ sudo apt install python3 python3-pip v4l-utils pkg-config
[sudo] Mot de passe de olivier :
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances... Fait
Lecture des informations d'état... Fait
python3 est déjà la version la plus récente (3.12.3-0ubuntu2).
python3 passé en « installé manuellement ».
v4l-utils est déjà la version la plus récente (1.26.1-4build3).
Les paquets supplémentaires suivants seront installés :
javascript-common libjs-jquery libjs-sphinxdoc libjs-underscore libpython3-dev libpython3.12-dev python3-dev
python3-wheel python3.12-dev
Paquets suggérés :
apache2 | lighttpd | httpd
Les NOUVEAUX paquets suivants seront installés :
javascript-common libjs-jquery libjs-sphinxdoc libjs-underscore libpython3-dev libpython3.12-dev pkg-config
python3-dev python3-pip python3-wheel python3.12-dev
0 mis à jour, 11 nouvellement installés, 0 à enlever et 2 non mis à jour.
Il est nécessaire de prendre 8184 ko dans les archives.
Après cette opération, 39,0 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer ? [O/n] o
Réception de :1 http://fr.archive.ubuntu.com/ubuntu noble/main amd64 javascript-common all 11+nmu1 [5936 B]
Réception de :2 http://fr.archive.ubuntu.com/ubuntu noble/main amd64 libjs-jquery all 3.6.1+dfsg+~3.5.14-1 [328 kB]
Réception de :3 http://fr.archive.ubuntu.com/ubuntu noble/main amd64 libjs-underscore all 1.13.4~dfsg+~1.11.4-3 [118 kB]
Réception de :4 http://fr.archive.ubuntu.com/ubuntu noble/main amd64 libjs-sphinxdoc all 7.2.6-6 [149 kB]
Réception de :5 http://fr.archive.ubuntu.com/ubuntu noble-updates/main amd64 libpython3.12-dev amd64 3.12.3-1ubuntu0.3 [5671 kB]
Réception de :6 http://fr.archive.ubuntu.com/ubuntu noble-updates/main amd64 libpython3-dev amd64 3.12.3-0ubuntu2 [10,3 kB]
Réception de :7 http://fr.archive.ubuntu.com/ubuntu noble/main amd64 pkg-config amd64 1.8.1-2build1 [7264 B]
Réception de :8 http://fr.archive.ubuntu.com/ubuntu noble-updates/main amd64 python3.12-dev amd64 3.12.3-1ubuntu0.3 [498 kB]
Réception de :9 http://fr.archive.ubuntu.com/ubuntu noble-updates/main amd64 python3-dev amd64 3.12.3-0ubuntu2 [26,7 kB]
Réception de :10 http://fr.archive.ubuntu.com/ubuntu noble/universe amd64 python3-wheel all 0.42.0-2 [53,1 kB]
Réception de :11 http://fr.archive.ubuntu.com/ubuntu noble-updates/universe amd64 python3-pip all 24.0+dfsg-1ubuntu1.1 [1317 kB]
8184 ko réceptionnés en 1s (10,5 Mo/s)
Sélection du paquet javascript-common précédemment désélectionné.
(Lecture de la base de données... 250528 fichiers et répertoires déjà installés.)
Préparation du dépaquetage de .../00-javascript-common_11+nmu1_all.deb ...
Dépaquetage de javascript-common (11+nmu1) ...
Sélection du paquet libjs-jquery précédemment désélectionné.
Préparation du dépaquetage de .../01-libjs-jquery_3.6.1+dfsg+~3.5.14-1_all.deb ...
Dépaquetage de libjs-jquery (3.6.1+dfsg+~3.5.14-1) ...
Sélection du paquet libjs-underscore précédemment désélectionné.
Préparation du dépaquetage de .../02-libjs-underscore_1.13.4~dfsg+~1.11.4-3_all.deb ...
Dépaquetage de libjs-underscore (1.13.4~dfsg+~1.11.4-3) ...
Sélection du paquet libjs-sphinxdoc précédemment désélectionné.
Préparation du dépaquetage de .../03-libjs-sphinxdoc_7.2.6-6_all.deb ...
Dépaquetage de libjs-sphinxdoc (7.2.6-6) ...
Sélection du paquet libpython3.12-dev:amd64 précédemment désélectionné.
Préparation du dépaquetage de .../04-libpython3.12-dev_3.12.3-1ubuntu0.3_amd64.deb ...
Dépaquetage de libpython3.12-dev:amd64 (3.12.3-1ubuntu0.3) ...
Sélection du paquet libpython3-dev:amd64 précédemment désélectionné.
Préparation du dépaquetage de .../05-libpython3-dev_3.12.3-0ubuntu2_amd64.deb ...
Dépaquetage de libpython3-dev:amd64 (3.12.3-0ubuntu2) ...
Sélection du paquet pkg-config:amd64 précédemment désélectionné.
Préparation du dépaquetage de .../06-pkg-config_1.8.1-2build1_amd64.deb ...
Dépaquetage de pkg-config:amd64 (1.8.1-2build1) ...
Sélection du paquet python3.12-dev précédemment désélectionné.
Préparation du dépaquetage de .../07-python3.12-dev_3.12.3-1ubuntu0.3_amd64.deb ...
Dépaquetage de python3.12-dev (3.12.3-1ubuntu0.3) ...
Sélection du paquet python3-dev précédemment désélectionné.
Préparation du dépaquetage de .../08-python3-dev_3.12.3-0ubuntu2_amd64.deb ...
Dépaquetage de python3-dev (3.12.3-0ubuntu2) ...
Sélection du paquet python3-wheel précédemment désélectionné.
Préparation du dépaquetage de .../09-python3-wheel_0.42.0-2_all.deb ...
Dépaquetage de python3-wheel (0.42.0-2) ...
Sélection du paquet python3-pip précédemment désélectionné.
Préparation du dépaquetage de .../10-python3-pip_24.0+dfsg-1ubuntu1.1_all.deb ...
Dépaquetage de python3-pip (24.0+dfsg-1ubuntu1.1) ...
Paramétrage de javascript-common (11+nmu1) ...
Paramétrage de libpython3.12-dev:amd64 (3.12.3-1ubuntu0.3) ...
Paramétrage de python3-wheel (0.42.0-2) ...
Paramétrage de python3.12-dev (3.12.3-1ubuntu0.3) ...
Paramétrage de pkg-config:amd64 (1.8.1-2build1) ...
Paramétrage de python3-pip (24.0+dfsg-1ubuntu1.1) ...
Paramétrage de libjs-jquery (3.6.1+dfsg+~3.5.14-1) ...
Paramétrage de libjs-underscore (1.13.4~dfsg+~1.11.4-3) ...
Paramétrage de libpython3-dev:amd64 (3.12.3-0ubuntu2) ...
Paramétrage de libjs-sphinxdoc (7.2.6-6) ...
Paramétrage de python3-dev (3.12.3-0ubuntu2) ...
Traitement des actions différées (« triggers ») pour man-db (2.12.0-4build2) ...
olivier@olivier-VMware-Virtual-Platform:~$ sudo apt install python3-venv
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances... Fait
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés :
python3-pip-whl python3-setuptools-whl python3.12-venv
Les NOUVEAUX paquets suivants seront installés :
python3-pip-whl python3-setuptools-whl python3-venv python3.12-venv
0 mis à jour, 4 nouvellement installés, 0 à enlever et 2 non mis à jour.
Il est nécessaire de prendre 2425 ko dans les archives.
Après cette opération, 2777 ko d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer ? [O/n] o
Réception de :1 http://fr.archive.ubuntu.com/ubuntu noble-updates/universe amd64 python3-pip-whl all 24.0+dfsg-1ubuntu1.1 [1703 kB]
Réception de :2 http://fr.archive.ubuntu.com/ubuntu noble-updates/universe amd64 python3-setuptools-whl all 68.1.2-2ubuntu1.1 [716 kB]
Réception de :3 http://fr.archive.ubuntu.com/ubuntu noble-updates/universe amd64 python3.12-venv amd64 3.12.3-1ubuntu0.3 [5678 B]
Réception de :4 http://fr.archive.ubuntu.com/ubuntu noble-updates/universe amd64 python3-venv amd64 3.12.3-0ubuntu2 [1034 B]
2425 ko réceptionnés en 1s (4252 ko/s)
Sélection du paquet python3-pip-whl précédemment désélectionné.
(Lecture de la base de données... 251580 fichiers et répertoires déjà installés.)
Préparation du dépaquetage de .../python3-pip-whl_24.0+dfsg-1ubuntu1.1_all.deb ...
Dépaquetage de python3-pip-whl (24.0+dfsg-1ubuntu1.1) ...
Sélection du paquet python3-setuptools-whl précédemment désélectionné.
Préparation du dépaquetage de .../python3-setuptools-whl_68.1.2-2ubuntu1.1_all.deb ...
Dépaquetage de python3-setuptools-whl (68.1.2-2ubuntu1.1) ...
Sélection du paquet python3.12-venv précédemment désélectionné.
Préparation du dépaquetage de .../python3.12-venv_3.12.3-1ubuntu0.3_amd64.deb ...
Dépaquetage de python3.12-venv (3.12.3-1ubuntu0.3) ...
Sélection du paquet python3-venv précédemment désélectionné.
Préparation du dépaquetage de .../python3-venv_3.12.3-0ubuntu2_amd64.deb ...
Dépaquetage de python3-venv (3.12.3-0ubuntu2) ...
Paramétrage de python3-setuptools-whl (68.1.2-2ubuntu1.1) ...
Paramétrage de python3-pip-whl (24.0+dfsg-1ubuntu1.1) ...
Paramétrage de python3.12-venv (3.12.3-1ubuntu0.3) ...
Paramétrage de python3-venv (3.12.3-0ubuntu2) ...
olivier@olivier-VMware-Virtual-Platform:~$ sudo apt install gobject-introspection libgirepository1.0-dev
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances... Fait
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés :
gir1.2-girepository-2.0-dev gobject-introspection-bin libgirepository-1.0-dev python3-mako python3-markdown
Paquets suggérés :
libgirepository1.0-doc python-mako-doc python3-beaker python-markdown-doc
Les NOUVEAUX paquets suivants seront installés :
gir1.2-girepository-2.0-dev gobject-introspection gobject-introspection-bin libgirepository-1.0-dev
libgirepository1.0-dev python3-mako python3-markdown
0 mis à jour, 7 nouvellement installés, 0 à enlever et 2 non mis à jour.
Il est nécessaire de prendre 581 ko dans les archives.
Après cette opération, 3277 ko d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer ? [O/n] o
Réception de :1 http://fr.archive.ubuntu.com/ubuntu noble/main amd64 gir1.2-girepository-2.0-dev amd64 1.80.1-1 [41,5 kB]
Réception de :2 http://fr.archive.ubuntu.com/ubuntu noble/main amd64 python3-mako all 1.3.2-1 [63,3 kB]
Réception de :3 http://fr.archive.ubuntu.com/ubuntu noble/main amd64 python3-markdown all 3.5.2-1 [72,0 kB]
Réception de :4 http://fr.archive.ubuntu.com/ubuntu noble/main amd64 gobject-introspection-bin amd64 1.80.1-1 [254 kB]
Réception de :5 http://fr.archive.ubuntu.com/ubuntu noble/main amd64 gobject-introspection amd64 1.80.1-1 [105 kB]
Réception de :6 http://fr.archive.ubuntu.com/ubuntu noble/main amd64 libgirepository-1.0-dev amd64 1.80.1-1 [28,5 kB]
Réception de :7 http://fr.archive.ubuntu.com/ubuntu noble/main amd64 libgirepository1.0-dev amd64 1.80.1-1 [17,0 kB]
581 ko réceptionnés en 0s (1164 ko/s)
Sélection du paquet gir1.2-girepository-2.0-dev:amd64 précédemment désélectionné.
(Lecture de la base de données... 251597 fichiers et répertoires déjà installés.)
Préparation du dépaquetage de .../0-gir1.2-girepository-2.0-dev_1.80.1-1_amd64.deb ...
Dépaquetage de gir1.2-girepository-2.0-dev:amd64 (1.80.1-1) ...
Sélection du paquet python3-mako précédemment désélectionné.
Préparation du dépaquetage de .../1-python3-mako_1.3.2-1_all.deb ...
Dépaquetage de python3-mako (1.3.2-1) ...
Sélection du paquet python3-markdown précédemment désélectionné.
Préparation du dépaquetage de .../2-python3-markdown_3.5.2-1_all.deb ...
Dépaquetage de python3-markdown (3.5.2-1) ...
Sélection du paquet gobject-introspection-bin précédemment désélectionné.
Préparation du dépaquetage de .../3-gobject-introspection-bin_1.80.1-1_amd64.deb ...
Dépaquetage de gobject-introspection-bin (1.80.1-1) ...
Sélection du paquet gobject-introspection:amd64 précédemment désélectionné.
Préparation du dépaquetage de .../4-gobject-introspection_1.80.1-1_amd64.deb ...
Dépaquetage de gobject-introspection:amd64 (1.80.1-1) ...
Sélection du paquet libgirepository-1.0-dev:amd64 précédemment désélectionné.
Préparation du dépaquetage de .../5-libgirepository-1.0-dev_1.80.1-1_amd64.deb ...
Dépaquetage de libgirepository-1.0-dev:amd64 (1.80.1-1) ...
Sélection du paquet libgirepository1.0-dev précédemment désélectionné.
Préparation du dépaquetage de .../6-libgirepository1.0-dev_1.80.1-1_amd64.deb ...
Dépaquetage de libgirepository1.0-dev (1.80.1-1) ...
Paramétrage de gir1.2-girepository-2.0-dev:amd64 (1.80.1-1) ...
Paramétrage de python3-markdown (3.5.2-1) ...
Paramétrage de python3-mako (1.3.2-1) ...
Paramétrage de gobject-introspection-bin (1.80.1-1) ...
Paramétrage de gobject-introspection:amd64 (1.80.1-1) ...
Paramétrage de libgirepository-1.0-dev:amd64 (1.80.1-1) ...
Paramétrage de libgirepository1.0-dev (1.80.1-1) ...
Traitement des actions différées (« triggers ») pour man-db (2.12.0-4build2) ...
olivier@olivier-VMware-Virtual-Platform:~$ python3 -m venv monenv
olivier@olivier-VMware-Virtual-Platform:~$ source monenv/bin/activate
(monenv) olivier@olivier-VMware-Virtual-Platform:~$ pip install camset
Collecting camset
Downloading camset-0.0.21-py3-none-any.whl.metadata (3.3 kB)
Collecting PyGObject (from camset)
Downloading pygobject-3.50.0.tar.gz (1.1 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.1/1.1 MB 12.5 MB/s eta 0:00:00
Installing build dependencies ... done
Getting requirements to build wheel ... done
Installing backend dependencies ... done
Preparing metadata (pyproject.toml) ... done
Collecting opencv-python (from camset)
Downloading opencv_python-4.10.0.84-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (20 kB)
Collecting numpy>=1.21.2 (from opencv-python->camset)
Downloading numpy-2.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (62 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 62.0/62.0 kB 17.2 MB/s eta 0:00:00
Collecting pycairo>=1.16 (from PyGObject->camset)
Using cached pycairo-1.27.0-cp312-cp312-linux_x86_64.whl
Downloading camset-0.0.21-py3-none-any.whl (86 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 86.2/86.2 kB 18.3 MB/s eta 0:00:00
Downloading opencv_python-4.10.0.84-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (62.5 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 62.5/62.5 MB 23.8 MB/s eta 0:00:00
Downloading numpy-2.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (16.1 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 16.1/16.1 MB 35.5 MB/s eta 0:00:00
Building wheels for collected packages: PyGObject
Building wheel for PyGObject (pyproject.toml) ... done
Created wheel for PyGObject: filename=pygobject-3.50.0-cp312-cp312-linux_x86_64.whl size=272934 sha256=47021015d6936a783e27add1941023f62ef47362d6fc3a5ccdc8d61803415ce1
Stored in directory: /home/olivier/.cache/pip/wheels/72/ab/6c/f52201a907017c93d24db06950a150312521e5e210c7dfea12
Successfully built PyGObject
Installing collected packages: pycairo, numpy, PyGObject, opencv-python, camset
Successfully installed PyGObject-3.50.0 camset-0.0.21 numpy-2.2.0 opencv-python-4.10.0.84 pycairo-1.27.0
(monenv) olivier@olivier-VMware-Virtual-Platform:~$ cd ~/monenv/lib/python3.12/site-packages/camset/
(monenv) olivier@olivier-VMware-Virtual-Platform:~/monenv/lib/python3.12/site-packages/camset$ ls
camset.py dialogs.py __init__.py lib __pycache__ toolbar.py v4l2.py
(monenv) olivier@olivier-VMware-Virtual-Platform:~/monenv/lib/python3.12/site-packages/camset$ cp camset.py camsetBG.py
(monenv) olivier@olivier-VMware-Virtual-Platform:~/monenv/lib/python3.12/site-packages/camset$
(monenv) olivier@olivier-VMware-Virtual-Platform:~/monenv/lib/python3.12/site-packages/camset$ nano camsetBG.py
(monenv) olivier@olivier-VMware-Virtual-Platform:~/monenv/lib/python3.12/site-packages/camset$ cat camsetBG.py
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import gi
import subprocess
import pathlib
import os
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
from cam_window import CamWindow
from dialogs import Dialogs
from helpers import Helpers
from v4l2control import V4L2Control
from layout import Layout
class Window(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self, title="Camset")
self.cardname = ""
layout = Layout(self, dialogs)
layout.setup_main_container()
layout.setup_boxes()
layout.setup_device_selection_box()
layout.setup_buttons()
layout.setup_warning_container()
layout.setup_toolbar(helpers.get_config_path(), V4L2Control(self))
layout.setup_grid()
self.layout = layout
def clear_and_rebuild(self):
intcontrols = self.int_control_box.get_children()
boolcontrols = self.bool_control_box.get_children()
menucontrols = self.menu_control_box.get_children()
intlabels = self.int_label_box.get_children()
boollabels = self.bool_label_box.get_children()
menulabels = self.menu_label_box.get_children()
for item in intcontrols:
self.int_control_box.remove(item)
for item in boolcontrols:
self.bool_control_box.remove(item)
for item in menucontrols:
self.menu_control_box.remove(item)
for item in menulabels:
self.menu_label_box.remove(item)
for item in intlabels:
self.int_label_box.remove(item)
for item in boollabels:
self.bool_label_box.remove(item)
self.read_capabilites()
if self.read_resolution_capabilites():
self.layout.setup_resolution()
self.resolution_selection.set_active(v4l2_control.set_active_resolution())
self.show_all()
v4l2_control.set_sensitivity()
def on_btn_showcam_toggled(self, widget):
if widget.get_active() and not camwin.props.visible:
camwin.init_camera_feed(helpers.get_video_resolution(self))
elif widget.get_active() and camwin.props.visible:
pass
else:
camwin.stop_camera_feed()
def on_btn_defaults_clicked(self, _widget):
v4l2_control.set_defaults()
self.resolution_selection.set_active(0) # first option is default
self.clear_and_rebuild()
def on_device_changed(self, _widget):
camwin.stop_camera_feed()
self.card = helpers.get_active_card(self)
self.cardname = helpers.get_card_name(self.card)
subtitle = " - {}".format(self.cardname) if len(self.cardname) > 0 else ""
self.set_title(title="Camset{}".format(subtitle))
camwin.set_title(title="Camera feed{}".format(subtitle))
self.clear_and_rebuild()
configfile = helpers.get_config_path() + "/" + self.cardname + ".camset"
if (os.path.exists(configfile) and self.autoload_checkbutton.get_active() and self.read_resolution_capabilites()):
dialogs.load_settings_from_file(configfile, None, self, v4l2_control)
self.btn_showcam.set_active(True)
def on_resolution_changed(self, _callback):
if (camwin.props.visible):
camwin.stop_camera_feed()
self.btn_showcam.set_active(True)
def read_resolution_capabilites(self):
outputread = subprocess.run(['v4l2-ctl', '-d', self.card, '--list-formats-ext'], check=True, universal_newlines=True, stdout=subprocess.PIPE)
outputs = outputread.stdout.split('\n')
has_resolution_capability = False
self.ctrl_store = Gtk.ListStore(str)
for line in outputs:
if ":" in line:
line = line.strip()
if "'" in line:
pre = line.split("'", 1)[1].split("'", 1)[0]
else:
if "Size:" in line:
post = line.split("Size: ", 1)[1].split(" ")[-1]
output = " - ".join((pre, post))
self.ctrl_store.append([output])
has_resolution_capability = True
return has_resolution_capability
def read_capabilites(self):
capabilities = v4l2_control.get_capabilities(self.card)
menu_value = 0 # set menu value when scanning menu to be able to read from menu options
for line in capabilities:
line = line.strip()
if line == "User Controls":
continue
elif line == "Camera Controls":
continue
elif "0x" in line:
setting = line.split('0x', 1)[0].strip()
label_text = str.replace(setting, '_', ' ').title()
value = line.split("value=", 1)[1]
value = int(value.split(' ', 1)[0])
label = Gtk.Label(hexpand = True, vexpand = False)
label.set_text(label_text)
label.set_size_request(-1, 35)
label.set_halign(Gtk.Align.END)
if "int" in line:
self.layout.add_int_item(line, setting, value, v4l2_control.set_int_value)
self.int_label_box.pack_start(label, False, False, 0)
if "bool" in line:
self.layout.add_bool_item(setting, value, v4l2_control.set_bool_value)
label.set_size_request(-1, 25)
self.bool_label_box.pack_start(label, False, False, 0)
if "menu" in line:
menu_value = value
self.layout.add_menu_item(setting, v4l2_control.on_ctrl_combo_changed)
self.menu_label_box.pack_start(label, False, False, 0)
# menu options
elif line:
# map index to value
value = int(line.split(": ", 1)[0]) # get value from text because index is not (always) same as value
self.ctrl_store.append ([line])
# count index, set active
index = 0
for item in self.ctrl_store:
index += 1
if value == menu_value:
self.ctrl_combobox.set_active(index - 1)
def check_devices(self):
devices = subprocess.run(['v4l2-ctl', '--list-devices'], check=False, universal_newlines=True, stdout=subprocess.PIPE)
i = 0
for line in devices.stdout.split('\n'):
if "dev" in line:
line = line.strip()
capabilities = v4l2_control.get_capabilities(line)
if capabilities is not None and len(capabilities) > 1:
self.store.append(["{0} - {1}".format(line, helpers.get_card_name(line))])
i += 1
self.device_selection.connect('changed', self.on_device_changed) # start after populating devices or action will be called when adding
if (i > 0):
self.device_selection.set_active(0)
def main():
pathlib.Path(helpers.get_config_path()).mkdir(parents=True, exist_ok=True)
camwin.hide()
win.check_devices()
win.resize(win.grid.get_allocation().width, win.grid.get_allocation().height + 20) # hardcoded extra margin seems needed to not show scrollbars, not sure where space is coming from
win.connect("destroy", Gtk.main_quit)
win.show_all()
Gtk.main()
helpers = Helpers()
dialogs = Dialogs()
win = Window()
v4l2_control = V4L2Control(win)
camwin = CamWindow(win, dialogs)
if __name__ == "__main__":
main()
(monenv) olivier@olivier-VMware-Virtual-Platform:~/monenv/lib/python3.12/site-packages/camset$ chmod u=rwx,g=rw,o=r camsetBG.py
(monenv) olivier@olivier-VMware-Virtual-Platform:~/monenv/lib/python3.12/site-packages/camset$ pip install opencv-python
Requirement already satisfied: opencv-python in /home/olivier/monenv/lib/python3.12/site-packages (4.10.0.84)
Requirement already satisfied: numpy>=1.21.2 in /home/olivier/monenv/lib/python3.12/site-packages (from opencv-python) (2.2.0)
(monenv) olivier@olivier-VMware-Virtual-Platform:~/monenv/lib/python3.12/site-packages/camset$ pip install opencv-python-headless
Collecting opencv-python-headless
Downloading opencv_python_headless-4.10.0.84-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (20 kB)
Requirement already satisfied: numpy>=1.21.2 in /home/olivier/monenv/lib/python3.12/site-packages (from opencv-python-headless) (2.2.0)
Downloading opencv_python_headless-4.10.0.84-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (49.9 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 49.9/49.9 MB 29.6 MB/s eta 0:00:00
Installing collected packages: opencv-python-headless
Successfully installed opencv-python-headless-4.10.0.84
(monenv) olivier@olivier-VMware-Virtual-Platform:~/monenv/lib/python3.12/site-packages/camset$ python3 camsetBG.py
Cannot open device /dev/video0, exiting.
(monenv) olivier@olivier-VMware-Virtual-Platform:~/monenv/lib/python3.12/site-packages/camset$
(monenv) olivier@olivier-VMware-Virtual-Platform:~/monenv/lib/python3.12/site-packages/camset$ deactivate
olivier@olivier-VMware-Virtual-Platform:~/monenv/lib/python3.12/site-packages/camset$ python3 camsetBG.py
Traceback (most recent call last):
File "/home/olivier/monenv/lib/python3.12/site-packages/camset/camsetBG.py", line 11, in <module>
from cam_window import CamWindow
File "/home/olivier/monenv/lib/python3.12/site-packages/camset/cam_window.py", line 1, in <module>
import cv2
ModuleNotFoundError: No module named 'cv2'
olivier@olivier-VMware-Virtual-Platform:~/monenv/lib/python3.12/site-packages/camset$ source ~/monenv/bin/activate
(monenv) olivier@olivier-VMware-Virtual-Platform:~/monenv/lib/python3.12/site-packages/camset$ python3 camsetBG.py
Cannot open device /dev/video0, exiting.
(monenv) olivier@olivier-VMware-Virtual-Platform:~/monenv/lib/python3.12/site-packages/camset$ deactivate
olivier@olivier-VMware-Virtual-Platform:~/monenv/lib/python3.12/site-packages/camset$ alias activate-camset="source ~/monenv/bin/activate"
olivier@olivier-VMware-Virtual-Platform:~/monenv/lib/python3.12/site-packages/camset$ activate-camset
(monenv) olivier@olivier-VMware-Virtual-Platform:~/monenv/lib/python3.12/site-packages/camset$ python3 camsetBG.py
(monenv) olivier@olivier-VMware-Virtual-Platform:~/monenv/lib/python3.12/site-packages/camset$ deactivate
olivier@olivier-VMware-Virtual-Platform:~/monenv/lib/python3.12/site-packages/camset$ alias activate-camset="source ~/monenv/bin/activate"
olivier@olivier-VMware-Virtual-Platform:~/monenv/lib/python3.12/site-packages/camset$ activate-camset
(monenv) olivier@olivier-VMware-Virtual-Platform:~/monenv/lib/python3.12/site-packages/camset$ python3 camsetBG.py
Cannot open device /dev/video0, exiting.
(monenv) olivier@olivier-VMware-Virtual-Platform:~/monenv/lib/python3.12/site-packages/camset$ nano run_camset.sh
(monenv) olivier@olivier-VMware-Virtual-Platform:~/monenv/lib/python3.12/site-packages/camset$ chmod +x run_camset.sh
(monenv) olivier@olivier-VMware-Virtual-Platform:~/monenv/lib/python3.12/site-packages/camset$ cat run_camset.sh
#!/bin/bash
# Activer l'environnement virtuel
source ~/monenv/bin/activate
# Exécuter le script Python
python3 ~/monenv/lib/python3.12/site-packages/camset/camsetBG.py
# Désactiver l'environnement virtuel après l'exécution
deactivate
(monenv) olivier@olivier-VMware-Virtual-Platform:~/monenv/lib/python3.12/site-packages/camset$ ./run_camset.sh
Cannot open device /dev/video0, exiting.
Dernière modification par tycooon (Le 22/12/2024, à 22:17)
Hors ligne
#7 Le 22/12/2024, à 13:51
- vin100vin
Re : [RESOLU] v4l2, Camset réglages d'une webcam Logitech C920 Pro
Wouah ! quel boulot !
J'ai un peu chipoté à partir de
Pour simplifier les choses , j'ai fait un script qui lance l'environnement et le script :
nano run_camset.sh
Savoir où mettre run_camset.sh
Ton post mériterait d'aller dans la doc
Encore merci
Dernière modification par vin100vin (Le 22/12/2024, à 13:54)
Xubuntu 24.04 sur ThinkPad P14s Gen 2 // Xubuntu 24.04 LTS sur LDLC Aurore NJ5S-16-S9
Hors ligne
#8 Le 22/12/2024, à 14:05
- vin100vin
Re : [RESOLU] v4l2, Camset réglages d'une webcam Logitech C920 Pro
Mais chose bizarre, tous les réglages se perdent quand je passe en Zoom ou Google meet...
Xubuntu 24.04 sur ThinkPad P14s Gen 2 // Xubuntu 24.04 LTS sur LDLC Aurore NJ5S-16-S9
Hors ligne
#9 Le 22/12/2024, à 15:31
- tycooon
Re : [RESOLU] v4l2, Camset réglages d'une webcam Logitech C920 Pro
Malheureusement, je ne vais pas pouvoir t'aider pour le réglage de la webcam, je me sers de mon portable en interface WI-FI avec Iriun Webcam.
Il m'est impossible de faire des essais, où alors il faudrait que j'achète une caméra. La lettre au Père-Noël est partie, mais pas de caméra dans la liste.
Vu ICI
Les paramètres peuvent être enregistrés et chargés. Si le bouton « Paramètres de chargement automatique » est coché, le camset s'affichera ~/.config/camset pour un fichier de paramètres portant le même nom que l'appareil (comme suggéré lors de l'enregistrement des paramètres) et chargez-le lors du démarrage de l'application ou lors du passage à cet appareil.
D'après ce que je peux comprendre, Il y a un fichier paramètre que l'on peut uploader via l'interface et je pense que l'on peut le modifier selon les réglages , il est ici :
cd ~/.config/camset/
Pour le script, on peut le mettre où tu veux,
je l'ai mis ici :
cd ~/monenv/lib/python3.12/site-packages/camset/
nano run_camset.sh
Copier ces lignes :
#!/bin/bash
# Activer l'environnement virtuel
source ~/monenv/bin/activate# Exécuter le script Python
python3 ~/monenv/lib/python3.12/site-packages/camset/camsetBG.py# Désactiver l'environnement virtuel après l'exécution
deactivate
chmod +x run_camset.sh
Vérifier s'il est bien créé :
cat run_camset.sh
Pour le desktop, pour une fois que l'on peut se passer des lignes de commandes. Il existe une application qui fait largement le travail.
sudo apt install menulibre
Lancer l’application via le menu pour créer un lanceur :
Remplace "olivier" dans le chemin de la commande par ton $USER
Pour le connaître :
echo $USER
Attention, pour voir le desktop dans le menu, il faut fermer la session et la ré-ouvrir, idem si tu fais des modifications ultérieures .
Dernière modification par tycooon (Le 22/12/2024, à 21:39)
Hors ligne
#10 Le 22/12/2024, à 16:22
- vin100vin
Re : [RESOLU] v4l2, Camset réglages d'une webcam Logitech C920 Pro
Merci beaucoup d'autant que je ne connaissais pas menulibre !
Il me semble que cela marche si on désactive l'option "Show camera feed"
Je lance Zoom par exemple, je lance camset avec des préréglages sauvés et ca fonctionne.
Encore merci, il me semble que d'autres pourraient bénéficier de ce tuto puisque le soft de Logitech n’existe pas sous linux
Peut-être quelqu'un trouvera-t-il une solution plus simple, d'ici là je mets le topic en résolu
Xubuntu 24.04 sur ThinkPad P14s Gen 2 // Xubuntu 24.04 LTS sur LDLC Aurore NJ5S-16-S9
Hors ligne