Résolu sur le forum : Borne Wallbox Pulsar Plus 7,4 kW sur abonnement 6 kVA : quel délestage avant accord copro (urgent)Ma panne diagnostiquée — réponse sous 48 h29 €

Le PyQt-Lab’ : mes codes PyQt en vrac !

Électroniquemis à jour le 24 avril 2023

Le PyQt-Lab est un outil puissant et pratique pour les développeurs Python qui souhaitent créer des applications graphiques. Il permet de créer des applications riches en fonctionnalités et faciles à utiliser grâce à l’utilisation de l’API PyQt. Avec le PyQt-Lab, les développeurs peuvent créer des applications graphiques complexes et intuitives en un temps record. Dans cet article, nous allons examiner en détail le PyQt-Lab et voir comment il peut être utilisé pour créer des applications graphiques à l’aide de codes PyQt.

Le PyQt-Lab’ : mes codes PyQt en vrac !

Par X. HINAULT – Juin 2013

Je rassemble dans cette rubrique la plupart des codes Python + Qt que j’ai écrit sous forme « as is », bruts de décoffrage. C’est un peu ma « boite à codes » PyQt où je rassemble tests, idées et tout ce qui me passe par la tête, en vrac. Les codes les plus pertinents sont détaillés et repris dans la rubrique Ateliers Python + Qt et les codes d’interfaces opérationnelles utilisables en pratique sont disponibles dans la rubrique PyQt Apps.

Le bouton signale les codes pour lesquels un tuto détaillé est disponible dans la rubrique Ateliers Python + Qt.

PYQTLAB

1.  PyQt : Les Bases

  • « Hello world ! » : l’interface graphique minimale

2.  PyQt + PySerial : la communication série (avec Arduino)

PyQt + PySerial : 1. la communication série Arduino vers interface PyQt (réception)
PyQt + PySerial : 2. la communication série interface PyQt vers Arduino (envoi)
PyQt + PySerial : 3. la communication série avancée entre interface PyQt et Arduino



3.  PyQt + PySerial : 1. la communication série Arduino vers interface PyQt (réception)

Créer un Terminal Série « Arduino like » de A à Z !
Terminal Série de base

  • Initialiser le port Série par clic souris sur un pushButton.
  • Interface graphique de base pour initialiser la connexion au port série (sélection graphique du débit, du port utilisé)
  • Interface graphique de base pour configuration, paramétrage, réception et affichage de chaines en provenance d’Arduino par le port série
  • Envoyer et recevoir des chaînes sur le port Série = créer un terminal série « Arduino-like » !

Variantes du Terminal Série

  • Un Terminal série « Arduino-like » léger et autonome : variante avec bouton de stop.
  • Terminal série « Arduino like » : variante avec bouton de stop et zone texte pour les chaînes envoyées sur le port série et spinbox de réglage du délai de réception

Arduino vers PyQt : Réception Série avec traitement de chaînes de caractères

  • Analyse d’une chaîne de caractères reçue sur le port Série et extraction de paramètres numériques.
  • Recevoir de façon asynchrone des paramètres numériques par réception de chaines spécifiques avec paramètre numérique reçue sur le port série (= décodage de « fonctions » différentes avec un seul paramètre numérique reçues sur le port série – affichage dans lcdNumber)

Arduino vers PyQt : Réception Série avec affichages numériques

  • Réception d’une valeur numérique sur le port série et affichage dans un widget LCD
  • Réception d’une valeur numérique sur le port série, conversion mesure/unité et affichage dans des widgets LCD.
  • Affichage dans 6 widgets d’affichage LCD de 6 valeurs numériques reçues sur le port série.
  • Affichage dans 12 widgets d’affichage LCD de 6 valeurs numériques reçues sur le port série et converties en unités.
  • Configurer le port série, recevoir les 6 valeurs numériques des voies analogiques sur le port série et les afficher dans 6 widgets LCD – variante avec onglets

Arduino vers PyQt+PyQwt (1) : Réception Série avec affichage dans des widgets d’affichage analogique.
QwtDial

  • Afficher dans un QwtDial, le widget d’affichage analogique « à aiguille », une valeur de conversion analogique numérique (0-1023) reçue sur le port série en provenance d’Arduino.
  • Réception d’une valeur numérique sur le port série, dans un QwtDial, le widget d’affichage analogique « à aiguille », conversion mesure/unité et affichage dans des widgets LCD.
  • Réception de 6 valeurs numériques sur le port série, dans 6 QwtDial, le widget d’affichage analogique « à aiguille », conversion mesure/unité et affichage dans 12 widgets LCD.

QwtThermo

  • Afficher dans un QwtThermo, le widget d’affichage analogique « vu-mètre », une valeur de conversion analogique numérique (0-1023) reçue sur le port série en provenance d’Arduino.
  • Réception d’une valeur numérique sur le port série, dans un QwtThermo, le widget d’affichage analogique « vu-mètre », conversion mesure/unité et affichage dans des widgets LCD.
  • Réception de 6 valeurs numériques sur le port série, dans 6 QwtThermo, le widget d’affichage analogique « vu-mètre », conversion mesure/unité et affichage dans 12 widgets LCD.
  • Lancer une alarme sonore ou vocale en cas de dépassement d’une valeur d’alarme d’un QwtThermo par une valeur reçue sur le port série

4.  PyQt + PySerial : 2. la communication série interface PyQt vers Arduino (envoi)

Envoi par clic pushButton On/Off

  • Allumer une LED côté Arduino avec un PushButton en mode ON/OFF.
  • Contrôler toutes les broches numériques d’une carte Arduino en mode ON/OFF à l’aide de pushButton On/Off

Envoi par clic pushButton

  • Envoyer et recevoir des chaînes sur le port Série = créer un terminal série « Arduino-like » !
    • Activité PyQt + Arduino : Envoyer une chaîne avec paramètre numérique vers Arduino et extraire la valeur numérique reçue côté Arduino
  • Terminal série intégrant un clavier de 5 pushButtons type « Joystick » pour envoi de chaînes personnalisées (contrôle graphique de dispositifs, robots…via le port série)
    • Activité : Contrôler un robot à PC embarqué à l’aide d’une tablette tactile
    • Activité : Contrôler une tourelle pan-tilt à l’aide de l’interface « Joystick »
  • Terminal série intégrant 1 spinBox (widget de réglage de valeur numérique) pour envoi de chaîne avec paramètre numérique sur le port Série.
  • Envoyer par clic sur un pushButton une valeur numérique d’un widget LCD réglable par un dial précédée du contenu d’un champ texte (format fonction(valeur))
    • Régler la luminosité d’une LED
  • Envoyer sur le port série la valeur numérique courante d’un slider après validation par appui sur un pushButton
    • Régler la position d’un servomoteur à l’aide d’un slider après validation par appui sur un pushButton
  • Envoyer sur le port série une valeur numérique saisie à l’aide d’un clavier graphique.
    • Contrôler la position d’une tourelle pan-tilt à l’aide de l’interface à clavier graphique
  • Un minuteur graphique pour contrôler Arduino : réglage d’un widget LCD avec un bouton réglable (dial), bouton de Go / Stop, envoi sur port série signal de début/fin (à partir de 2 champs texte) (Interface « micro-onde like »)
    • Allumer / éteindre un dispositif connecté à Arduino à partir de l’interface de minuteur graphique série
  • Envoyer sur le port série la valeur numérique courante d’un QwtDial après validation par appui sur un pushButton
    • Régler la position d’un servomoteur à l’aide d’un QwtDial, widget « à aiguille » configuré à 180°après validation par appui sur un pushButton

Envoi par widget graphique analogique

  • Envoyer sur le port la valeur numérique courante d’un slider en « live »
    • Régler la position d’un servomoteur à l’aide d’un slider en « live » par envoi d’une valeur numérique sur le port série
  • Envoyer sur le port série la valeur numérique courante de 3 sliders en « live » sous forme de chaînes avec paramètres numériques *
    • Régler la couleur d’une LED RGB à l’aide de 3 sliders en « live » par envoi d’une valeur numérique sur le port série
  • Envoyer sur le port série la valeur numérique courante de 5 sliders en « live » sous forme de chaînes avec paramètres numériques *
    • Contrôler un bras robotisé 5/6 axes à l’aide de 6 sliders en « live » par envoi de chaînes avec paramètres numériques sur le port série
  • Envoyer sur le port série la valeur numérique courante d’un Dial, bouton réglable, en « live » (lors du lâcher bouton souris)
  • Envoyer sur le port série la valeur numérique courante de 5 sliders en « live » sous forme de chaînes avec paramètres numériques + enregistrement des positions et boutons GoTo Sync et bouton « play » +/- enregistrement fichier
    • Contrôler un bras robotisé 5/6 axes à l’aide de 5 sliders en « live » par envoi de chaînes avec paramètres numériques sur le port série et mémorisation des séquences
  • Envoyer sur le port série la valeur numérique courante d’un QwtDial, widget « à aiguille » configuré à 180°, en « live »
    • Régler la position d’un servomoteur à l’aide d’un QwtDial, widget « à aiguille » configuré à 180° en « live »

Avec affichage webcam (voir OpenCV)

  • Interface couplant Terminal Série + affichage capture webcam (pour contrôle tourelle pan/tilt avec retour vidéo…) *
  • Interface couplant Terminal Série + clavier graphique type « Joystick » + affichage capture webcam (pour contrôle robot avec retour vidéo…)*

5.  PyQt + PySerial : 3. la communication série avancée entre interface PyQt et Arduino

Echanges bi-directionnels Arduino <=> PyQt

  • Envoyer et recevoir des chaînes sur le port Série = créer un terminal série « Arduino-like » !
  • Un Terminal série « Arduino-like » léger et autonome : variante avec bouton de stop.
  • Terminal série « Arduino like » : variante avec bouton de stop et spinbox de réglage du délai de réception
  • Envoyer une chaîne de requête vers Arduino et récupérer la réponse renvoyée (lancer conversion analogique et récupérer mesure)

Arduino vers PyQt vers Gnu/Linux : Réception Série et contrôle du Système

  • La réception d’une chaîne (envoyée par Arduino) sur le port série lance une ligne de commande système.?
  • Déclencher une succession de lignes de commande par réception d’une chaîne reçue sur le port série lors appui sur un BP (Arduino)

Arduino vers PyQt+Pyqtgraph : Réception Série avec affichage graphique avancé sous forme de courbes

  • Oscilloscope mono-voie simple (voir pyqtgraph)
  • Oscilloscope mono-voie simple avec datalogging dans fichier texte (voir pyqtgraph)
  • Oscilloscope 6 voies simultanées sur le même graphique
  • Oscilloscope 6 voies simultanées sur 6 graphiques différents

Arduino vers PyQt+PyQwt (2) : Réception Série avec affichage graphique sous forme de courbes

  • Oscilloscope mono-voie simple (voir Qwt)
  • Oscilloscope mono-voie simple avec datalogging dans fichier texte (voir Qwt)
  • Oscilloscope 6 voies simultanées sur le même graphique
  • Oscilloscope 6 voies simultanées sur 6 graphiques différents
  • Une interface pour thermomètre numérique (LM 35 côté Arduino) avec affichage QwtPlot + QwtThermo + datalogging dans un fichier

PYQTLAB

6.  PyQt et le pcDuino


6.1  Utilisation des E/S seules à partir d’une interface graphique

Dans cette rubrique, apprenez à créer des interfaces graphiques pour contrôler et interagir avec les broches E/S : une fois l’interface graphique lancée, vous pourrez simplement l’afficher sur un écran HDMI de votre choix, mais surtout, vous pourrez contrôler le pcduino à partir d’un poste fixe ou d’une tablette tactile par accès distant via le réseau ethernet filaire ou wifi !

S’installer

Sorties numériques

  • L’appui sur un bouton graphique ON/OFF allume/éteint une LED
  • Contrôler une LED à l’aide d’une interface minuteur « micro-onde like »
  • Interface graphique de contrôle de 8 sorties numériques
  • Interface de contrôle à 5 boutons graphiques pour contrôle d’un robot mobile à 2 moteurs

Entrées numériques

  • L’appui sur un bouton fait défiler un compteur (pompe a essence)

Entrées analogiques
Affichages numériques

  • Afficher une mesure analogique dans un widget afficheur LCD
  • Afficher une mesure analogique dans un widget afficheur LCD avec champs de conversion en unité
  • Thermomètre numérique à LM 35
  • Afficher les mesures numériques brutes dans 6 widgets afficheur LCD
  • Afficher les mesures numériques dans 6 widgets afficheur LCD avec champs de conversion d’unité

Affichages analogiques

  • Afficher une mesure analogique dans un widget à aiguille
  • Afficher une mesure analogique dans un widget à aiguille avec champs de conversion en unités
  • Afficher 6 mesures analogiques dans 6 widgets à aiguille
  • Afficher 6 mesures analogiques dans 6 widgets à aiguille avec champs de conversion en unités
  • Afficher une mesure analogique dans un widget « bargraph »
  • Afficher une mesure analogique dans un widget « bargraph » avec champs de conversion en unités
  • Afficher 6 mesures analogiques dans 6 widgets « bargraph »
  • Afficher 6 mesures analogiques dans 6 widgets « bargraph » avec champs de conversion en unités

Affichages sous forme de courbe
Monovoie :

  • Oscilloscope basse fréquence monovoie
  • Oscilloscope basse fréquence monovoie avec widgets de réglage, bouton de stop, widget LCD valeur, croix de lignes de sélection TOP !
  • Interface de datalogging « lent » sur 24H avec widget de réglages, croix de sélection

Multivoies :

  • Oscilloscope basse fréquence 6 voies sur 1 graphique
  • Oscilloscope basse fréquence 6 voies sur 1 graphique avec widget de sélection des courbes à afficher
  • Oscilloscope basse fréquence 6 voies sur 6 graphiques

A savoir : toutes les interfaces graphiques affichant les courbes proposées ici, basées sur la librairie pyqtgraph, permettent le zoom sur le graphique, l’export par simple clic droit, au format vectoriel *.svg, image *.png, data texte *.csv et même le copier/coller dans le presse-papier ! Une réutilisation maximale des graphiques obtenus est ainsi possible.

Sorties analogiques

  • Faire varier la luminosité d’une LED à l’aide d’un slider

6.2  Utilisation des E/S + fonctions système à partir d’une interface graphique

S’installer

Sorties numériques

  • Interface de contrôle à 5 boutons pour contrôle d’un robot mobile avec retour vidéo

Entrées numériques

Entrées analogiques

  • Serveur graphique de données analogiques

Sorties analogiques

Périphériques d’entrée

  • Utiliser un keypad en tant que télécommande
  • Allumer des LEDs à l’aide d’un Joystick
  • Application « pompe à essence »

Systeme

Fichiers

  • ..

Reseau

  • Contrôler les broches E/S à partir d’une interface web javascript + Ajax
  • Serveur graphique de données analogiques

Audio/Voix

  • ..

Image

  • Capturer une image webcam et la visualiser par appui sur un bouton poussoir
  • Application photomaton

ÉlectroniqueChamp électrique : les notions fondamentales expliquées simplement

PCDUINOAppESSysModele

Création originale de X.HINAULT – www.mon-club-elec.fr – 2013 – Tous droits réservés – GPLv3

PYQTLAB

7.  PyQt et le RaspberryPi


7.1  Utilisation des E/S seules à partir d’une interface graphique

S’installer

  • S’installer pour programmer le raspberryPi en Python et intro au langage Python PDF

Sorties numériques

  • L’appui sur un bouton graphique ON/OFF allume/éteint une LED
  • Contrôler une LED à l’aide d’une interface minuteur « micro-onde like »?
  • Interface de contrôle des sorties numériques
  • Interface de contrôle à 5 boutons pour contrôle d’un robot mobile

Entrées numériques

  • L’appui sur un bouton fait défiler un compteur (pompe a essence)

Entrées analogiques

  • Afficher la mesure numérique dans un widget afficheur LCD
  • Afficher les mesures numériques dans 6 widgets afficheur LCD
  • Oscilloscope basse fréquence monovoie

Sorties analogiques

  • Faire varier la luminosité d’une LED à l’aide d’un slider

Réseau

  • Contrôler les broches E/S à partir d’une interface web javascript + Ajax

7.2  Utilisation des E/S + fonctions système à partir d’une interface graphique

S’installer

  • S’installer pour programmer des interfaces graphiques avec PyQt pour le RaspberryPi PDF

Sorties numériques

  • Contrôler les broches E/S à partir d’une interface web javascript + Ajax
  • Interface de contrôle à 5 boutons pour contrôle d’un robot mobile par le port série avec retour vidéo

Entrées numériques

  • Enregistrer un message dans un fichier lors appui sur un bouton poussoir
  • Capturer une image webcam sur appui bouton poussoir
  • Déclencher l’exécution d’une commande système à partir d’un bouton poussoir

Entrées analogiques

Sorties analogiques

  • Enregistrer la mesure d’une broche analogique à intervalle régulier dans un fichier
  • Serveur graphique de données analogiques

Clavier

  • Utiliser un Keypad en tant que clavier numérique
  • Utiliser un keypad en tant que télécommande
  • Allumer des LEDs à l’aide d’un Joystick

Création originale de X.HINAULT – www.mon-club-elec.fr – 2013 – Tous droits réservés – GPLv3

PYQTLAB

8.  PyQt Lab’ : Images et Dessin avec PyQt

Pour comprendre

  • Les images dans PyQt

Dessin fixe
Intro

  • Créer une image de couleur unie simple et régler la couleur avec des sliders (QPixmap seul)

Dessiner des formes géométriques simples sur une image dans un Label (QPixmap et QImage)

  • Dessiner un carré, une ligne, un cercle..
  • Déplacer une ligne horizontale à l’aide d’un slider vertical
  • Accéder aux pixels d’une zone de dessin (QPixmap et QImage) :
    • Dessiner un simple cercle par accès direct aux pixels
    • Créer une image 1 canal (niveau de gris) à l’aide d’un tableau numpy
    • Créer une image 3 canaux (couleur RGB) à l’aide d’un tableau numpy
  • Appliquer une opération mathématique f(x,y) à tous les pixels (QPixmap et QImage) :
    • Appliquer une opération mathématique f(x,y) à tous les pixels d’une image en niveaux de gris
    • Appliquer une opération mathématique f(x,y) à tous les pixels d’une image couleur RGB

Dessin, Images et I/O

  • Ouvrir/Enregistrer une image (QPixmap et QImage) depuis/dans un fichier

Zone de dessin et Interactivité avec la souris

  • Détecter la position du curseur de souris sur un QLabel d’affichage d’une image
    • Détecter la position du curseur de souris sur un QLabel d’affichage d’une image en utilisant un eventFilter (le plus réactif ?)
    • Détecter la position du curseur de souris sur un QLabel d’affichage d’une image en connectant un événement à un signal *
  • Modifier la couleur de fond d’une image lors d’un clic souris
  • Détecter la position de souris sur l’image et afficher le point courant (croix de lignes)
  • Un rectangle suit le pointeur de la souris
  • Dessiner le pixel sous le curseur souris tant que bouton souris appuyé
  • Dessiner le pixel sous le curseur souris tant que bouton souris appuyé et enregistrer le fichier obtenu
  • Modifier l’image selon la position de la souris :
    • Transposition de l’exemple Processing Math Graphing2DEquation et optimisation des calculs avec module numexpr (vitesse x 2.5 !)

Animation dessin

  • Rafraîchir à intervalle régulier une image aléatoire créée à partir d’un tableau numpy (=parasites tv)
  • Déplacer une forme géométrique dans une zone de dessin (bounce) ( à la façon « Processing-like » – vitesse x 2.5 env. !) *
  • Faire défiler une ligne de pixel = « linéariser » une image

et aussi : pygame ? en fait interface spécifique… donc on perd les atouts de PyQt…

Images existantes

  • Ouvrir/Enregistrer une image (QPixmap et QImage) depuis/dans un fichier
  • Connaître les caractéristiques RGB du pixel sous le pointeur de la souris
  • Dessiner sur une image à la souris et enregistrer l’image modifiée
  • Insérer une image dans une image..
  • Capturer dans une image un QWidget existant ou une fenêtre..
  • Ligne horizontale mobile à l’aide d’un slider vertical, sur une image ouverte à partir d’un fichier. *
  • pyqtgraph : Afficher la courbe d’intensité des pixels sous une ligne horizontale mobile à l’aide d’un slider vertical sur une image ouverte à partir d’un fichier. *
  • Modifier les caractéristiques d’une image : voir section OpenCV

Console

  • Interagir avec une image/dessin à partir d’une console intégrée dans la GUI *

Image et interactivité avancée

  • Contrôler la couleur d’une image à la voix

Création originale de X.HINAULT – www.mon-club-elec.fr – 2013 – Tous droits réservés – GPLv3

PyqtDessinModele

ÉlectroniqueBien chauffer son atelier d’électronique : confort, sécurité et continuité de travail

PYQTLAB

9.  Affichage graphique et mathématique avec PyQt

Plusieurs librairies pour affichage graphique type scientifique ou mathématique sont disponibles et utilisables avec PyQt :

  • PyQwt : une librairie graphique dérivée de la version originale en C, Qwt. Cette librairie est actuellement obsolète et non maintenue, mais elle reste potentiellement utile en raison des widgets analogiques qu’elle propose et son utilisation facile avec QtDesigner.
  • Matplotlib : cette librairie est « The Must » de l’affichage graphique scientifique en Python, supportant notamment plusieurs environnement graphique dont PyQt. Une librairie incontournable qu’il faut connaître en raison de ses nombreuses possibilités avancées 2D et 3D. Cette librairie s’utilise également très facilement avec ipython. Par contre, cette librairie s’avère un peu lente pour des affichages temps réel. Intégration dans PyQt simple. Matplotlib est à privilégier dès lors que l’on souhaite réaliser des graphiques élaborés ( champs vectoriels, coordonnées polaires, etc… )
  • Pyqtgraph : Comme son nom l’indique, cette librairie est construite sur PyQt et son utilisation avec PyQt est donc naturelle. Cette librairie est plus simple dans ses possibilités que Matplotlib (ne supporte pas champs vectoriel, coordonnées polaires, etc..) mais propose aussi des choses qui n’existent pas avec matplotlib (notamment l’interactivité avec le graphique). Le point fort de Pyqtgraph : sa grande rapidité qui en fait la solution privilégiée pour des affichages temps-réel.

PyQt + Pyqtgraph : Afficher des courbes temps-réel et réaliser du calcul scientifique
PyQt + Qwt : afficher des graphiques analogiques et des courbes?
PyQt + Matplotlib : Afficher des courbes mathématiques et réaliser du calcul scientifique?

10.  PyQt + PyqtGraph : afficher des graphiques et des courbes

  • Installation de pyqtgraph sous Gnu/Linux

10.1  Tracé de courbes simples

Les bases

  • Afficher et paramétrer un graphique pyqtgraph vide dans une interface Qt
  • Afficher une courbe simple dans un graphique pyqtgraph
  • Afficher et paramétrer un graphique pyqtgraph vide dans une interface Qt avec widgets de paramétrage des axes
  • Paramétrer l’affichage des points d’une courbe dans un graphique pyqtgraph
  • Interagir avec une courbe d’un graphique pyqtgraph à l’aide de sliders (tuto)

Affichages de courbes y=f(x)

  • Afficher une courbe de 1000 valeurs aléatoires simulant une série de données (tuto)
  • Afficher/masquer plusieurs courbes simples dans un graphique pyqtgraph, sélectionnables par case à cocher
  • Afficher une courbe à partir d’une série de valeurs chargées à partir d’un fichier texte ou saisies dans une zone texte, enregistrables dans un fichier texte. (tuto)
  • Définir la courbe à tracer à partir d’une formule saisie en zone texte, et enregistrer données dans fichier

Exemples de courbes mathématiques

  • Autour de la loi du corps Noir
    • Afficher la courbe du corps noir et la paramétrer à l’aide d’un slider
    • Afficher simultanément la loi du corps Noir et la loi de Wien reliant le maxima d’émission à la température
    • Pyduino : thermostat de Planck : afficher la loi du corps noir en fonction de l’état d’un potentiomètre

Affichage de courbes paramétriques y=f(t) et x=f(t)

  • Affichage d’une courbe paramétrique d’exemple
  • Exemple de courbe réelle : Courbe de l’analemna

10.2  Paramétrage de l’interactivité du graphique

Le clic droit sur le graphique pyqtgraph permet l’export immédiat aux formats *.svg, *.png et même Matplotlib du graphique courant !! Il est donc incroyablement simple de réutiliser un graphique pyqtgraph obtenu par calcul !

Doc

  • L’interactivité par défaut
  • Description du menu contextuel par défaut et des options disponibles

Codes

  • Exemple d’interactivité prédéfinie : voir Afficher une courbe simple dans un graphique pyqtgraph
  • Afficher et paramétrer un graphique pyqtgraph vide dans une interface Qt avec widgets de paramétrage des axes
  • Afficher le point courant d’une courbe y=f(x) sous le curseur de la souris
  • Afficher une croix de lignes sous la souris ainsi que le point courant d’une courbe
  • Récupérer la valeur et dessiner le point courant lors d’un clic souris

10.3  Tracé de courbes « temps réel »

Simple

  • Affichage progressif d’une courbe
  • Affichage progressif d’une courbe avec widget de paramétrage des axes et de réinitialisation
  • Affichage progressif d’une courbe avec bouton de stop et bouton de réglage de la vitesse, widget LCD valeur courante
  • Affichage progressif d’une courbe bouton de stop, réglage vitesse, widget LCD valeur, valeur courante sous curseur et croix de lignes
  • Affichage progressif de 6 courbes dans un même graphique avec widget d’affichage/masquage
  • Affichage progressif de 6 courbes dans 6 graphiques différents

Pyduino

  • Oscilloscope basse fréquence monovoie
  • Oscilloscope basse fréquence monovoie avec widgets de réglage, bouton de stop, widget LCD valeur, croix de lignes de sélection TOP !
  • Oscilloscope basse fréquence 6 voies sur 1 graphique
  • Oscilloscope basse fréquence 6 voies sur 6 graphiques

Port Série (Arduino)
Avec Pyqtgraph (recommandé)

  • Afficher une courbe à partir de valeurs reçues sur le port série (oscillo simple) *
  • Afficher une courbe à partir de valeurs reçues sur le port série, avec widgets de paramétrage des axes
  • Idem avec affichage de la valeur courante et conversion en unité voulue
  • Idem avec option de tracé d’une croix de lignes et du point courant
  • Idem multicourbe sur le même graphe
  • Idem multicourbe sur n courbes

Avec PyQwt (obsolète)

  • Afficher une courbe à partir de valeurs reçues sur le port série (oscillo simple) *
  • Afficher une courbe à partir de valeurs reçues sur le port série, avec widgets de paramétrage des axes *
  • Idem avec affichage de la valeur courante et conversion en unité voulue
  • Idem avec option de tracé d’une croix de lignes et du point courant
  • Idem multicourbe sur le même graphe
  • Idem multicourbe sur n courbes

10.4  Console intégrée

  • Interface PyQt intégrant graphique pyqtgraph et console dans une même GUI pour interactivité « en direct » avec le graphique*

10.5  Tracé de courbes avec timeline

  • Créer un graphique avec une timeline interactive
  • Créer un graphique avec une timeline interactive à partir d’un fichier de données
  • Affichage progressif d’une courbe dans une timeline et affichage de la zone sélectionnée

10.6  Images simples avec pyqtgraph

  • Affichage d’une image simple
  • Création d’une image telle que i=f(x,y)

10.7  Images avec widgets pyqtgraph

10.8  Images et ROI

10.9  Tracé d’images « temps-réel » ou animées

  • Affichage animé d’une image telle que i=f(x,y)

PYQTLAB

11.  PyQt + OpenCV : traiter des images fixes

11.1  Pour débuter

  • Afficher une image chargée depuis un fichier avec OpenCV dans une interface PyQt
  • Sélectionner un fichier image et afficher l’image avec OpenCV dans une interface PyQt

11.2  Traitement d’image de base

  • Déclarer / Initialiser des « buffers » image OpenCV pour réaliser facilement les opérations sur des images à partir d’un fichier sélectionné
  • Convertir une image RGB en niveaux de gris à partir d’un fichier sélectionné
  • Appliquer un effet miroir à une image RGB
  • Inverser une image RGB
  • Appliquer un flou à une image RGB (filtre Gaussien) *
  • Appliquer un seuillage (réglé par Slider) et binariser une image RGB*
  • Visualiser les différents types de seuillage dans différentes fenêtres à partir d’un fichier sélectionné

11.3  Traitement d’image avancé

Couleurs RGB

  • Afficher les canaux RGB d’une image dans des fenêtres séparées
  • Modifier les canaux d’une image RGB à l’aide de sliders
  • Filtre « mixeur de canaux » couleur
  • Filtre « mixeur de canaux » en niveaux de gris

Histogrammes

  • Egaliser histogramme
  • Afficher histogramme d’une image

Espace de couleurs

  • Conversion RGB to HSV

11.4  Opérations sur pixels

  • Analyser l’intensité de tous les pixels d’une ligne sous forme graphique

11.5  Extractions de contours

  • Appliquer un filtre de Sobel à une image RGB
  • Appliquer un filtre de Sharr à une image RGB
  • Appliquer un filtre de Canny à une image RGB

11.6  Traitement entre 2 images

11.7  Soustraction du fond

11.8  Détection de visage

  • Détecter des visages dans une image RGB*
  • Obtenir de l’information sur les visages détectés (nombre, position centre, rectangle encadrant…)
  • Détection des yeux dans une image RGB*

11.9  Détection des contours de formes 2D quelconques (détection de Blobs)

  • Détecter et dessiner les contours de formes 2D quelconques à partir d’une image binarisée
  • Obtenir de l’information sur les contours détectés (position centre, aire, rectangle et cercle encadrants)

11.10  Sélection de formes 2D de formes 2D quelconques (filtrage des Blobs retenus)

11.11  Analyse de contours de formes 2D quelconques

  • analyse de convexité de contours de formes 2D quelconques

11.12  Détection de formes 2D géométriques

11.13  Fonctions de dessin 2D

PYQTLABOpenCVFichiersModele

PYQTLAB

12.  PyQt Lab’ : PyQt + OpenCV + webcam : Capturer et traiter en « temps réel » des images issues d’un flux vidéo

  • Infos utiles concernant le module OpenCV pour Python

12.1  Pour débuter

  • Afficher le flux vidéo issu d’une webcam dans une interface Qt (capture simple) – version cv Tuto : – 15 p. – 0.25€
  • à noter : pas de différence significative avec cv2

12.2  Dessin sur l’image vidéo

  • Afficher flux vidéo webcam et dessiner rectangle sous le curseur de la souris
  • Afficher flux vidéo webcam et surajouter tracé façon « cockpit avion »
  • Afficher flux vidéo webcam et dessiner rectangle sous le curseur de la souris et afficher ROI dans un second QLabel

12.3  Enregistrer image

  • Capturer une image webcam et l’enregistrer dans un fichier par clic sur un pushButton (façon « appareil photo »). +/- son
  • Capturer une image webcam à intervalle régulier (datalogging « photo »)

12.4  Améliorer la vitesse de capture d’image

  • La vitesse de capture d’image : explications? (PDF)

Capture avec OpenCV

  • Afficher le flux vidéo issu d’une webcam dans une interface Qt (capture simple avec évaluation des délais) – version cv (Temps capture : 30 ms !! (=lent ++) 30 Fps max )
  • à noter : pas de différence significative avec cv2

Capture avec GSVideo

  • Capture simple avec GSVideo (Temps capture : 30ms Fps : 30fps donc idem OpenCV…)
  • Capture simple avec GSVideo et utilisation signal ‘pull-buffer’ (Temps capture :1 à 4ms Fps (bien ++): 100 obtenu avec eyePS3 en 320×240! )
  • Capture simple avec GSVideo et connexion signal ‘new-buffer’? (Temps capture : Fps : )
  • Programme type : Capture simple avec GSVideo avec ma librairie PyQtCV

12.5  Traitement d’image de base du flux vidéo direct

  • Afficher le flux vidéo issu d’une webcam dans une interface Qt (version avec buffers pour traitement d’image ) Tuto : – 22 p. – 0.25€
  • Afficher le flux vidéo brut issu d’une webcam et le flux traité (exemple en niveau de gris) dans une même interface Qt (buffers + 2 zones d’affichages) Tuto : – 24 p. – 0.25€
  • Convertir une image RGB webcam en niveaux de gris *
  • Appliquer un effet miroir à une image RGB webcam *
  • Inverser une image RGB webcam *
  • Appliquer un flou à une image RGB webcam (filtre Gaussien) *
  • Appliquer un seuillage (réglé par Slider) et binariser une image RGB webcam *

12.6  Traitement d’image avancé du flux vidéo direct

  • Afficher les canaux RGB d’une image webcam dans des fenêtres séparées *
  • Modifier les canaux d’une image RGB webcam à l’aide de sliders
  • Filtre « mixeur de canaux » couleur d’une image webcam *
  • Filtre « mixeur de canaux » en niveaux de gris d’une image webcam *
  • Filtre « mixeur de canaux » couleur d’une image webcam avec Sliders
  • Filtre « mixeur de canaux » en niveaux de gris d’une image webcam avec Sliders
  • Isolement objet coloré par filtrage « mixeur de canaux » en niveau de gris + seuillage binaire
  • Egaliser histogramme d’une image webcam
  • Afficher histogramme d’une image webcam
  • Conversion RGB to HSV d’une image webcam
  • Afficher Histogramme d’une image RGB dans QwtPlot

12.7  Capture d’image sur clic bouton

  • Capturer une image sur clic pusbutton
  • Capturer image traitée sur clic pushButton
  • Enregistrer image dans un fichier

12.8  Opérations sur pixels

  • Analyser l’intensité de tous les pixels d’une ligne sous forme graphique d’une image webcam *

12.9  Extractions de contours

  • Appliquer un filtre de Sobel à une image RGB webcam
  • Appliquer un filtre de Sharr à une image RGB webcam
  • Appliquer un filtre de Canny à une image RGB webcam

12.10  Traitement entre 2 images

12.11  Soustraction du fond

12.12  Détection de visage

  • Détecter des visages dans une image RGB webcam
  • Obtenir de l’information sur les visages détectés (nombre, position centre, rectangle encadrant…) à partir d’une image webcam

12.13  Détection des contours de formes 2D quelconques (détection de Blobs)

  • Détecter et dessiner les contours de formes 2D quelconques à partir d’une image webcam binarisée
  • Obtenir de l’information sur les contours détectés (position centre, aire, rectangle et cercle encadrants) à partir d’une image webcam

12.14  Sélection de formes 2D de formes 2D quelconques (filtrage des Blobs retenus)

12.15  Analyse de contours de formes 2D quelconques

  • analyse de convexité de contours de formes 2D quelconques à partir d’une image webcam

12.16  Détection de formes 2D géométriques

12.17  Fonctions de dessin 2D

12.18  …

12.19  Calibrage de webcam

12.20  OCR (avec OpenCV ou non…)

PYQTLABOpenCVWebcamModele
PYQTLABPyqtcvWebcamModele

13.  PyQt + OpenGL(3D) : l’accélération graphique et l’affichage 3D avec PyQt

13.1  Pour commencer

  • Afficher le repère 3D de la fenêtre dans une interface Qt
  • Interface Qt de visualisation du repère 3D (rotation/translation dans les 3 axes)

13.2  Les fonctions et concepts OpenGL de base

13.3  Utiliser les Display List

13.4  Utiliser les Vertex Shaders

13.5  Utiliser les VBO (Virtual Buffer Object)

PYQTLAB3DOpenGLModele

PYQTLABModele

Donnez votre avis

Soyez le 1er à noter cet article
ou bien laissez un avis détaillé


Partagez cet article maintenant !


Ça ne règle pas votre cas ?

Décrivez la panne sur le forum, avec une photo si vous pouvez : les membres qui ont eu la même répondent, et le sujet reste pour les suivants.

Avatar photoAvatar photoAvatar photoAvatar photoAvatar photoRejoindre les 54 membres — gratuit, 44 pannes résolues

Dans le même tiroir

Réagissez à cet article

La lettre du club

Une lettre par mois, accrochée au panneau

Les sujets du forum résolus dans le mois, un guide, un chiffre qu’on peut vérifier chez soi. Rien d’autre, jamais plus souvent — et on se désabonne d’un clic.

Ce qu’il y a dedans

Votre adresse

Une lettre par mois. Désabonnement en un clic.

Partagez votre réaction