Accueil > > > GESTION ET AFFICHAGE DE DEUX WEBCAMS (VIDEOCAPTURE + PIL)
GESTION ET AFFICHAGE DE DEUX WEBCAMS (VIDEOCAPTURE + PIL)
Information sur la source
Description
Un simple bout de code que j'ai réalisé. En fait c'est le debut d'un projet de stereo vision. Le code n'est pas franchement optimisé, et c'etais pour moi uniquement un moyen d'apprendre le python. Ce code cherche les deux premieres sources video, et les affiche dans les deux canvas du haut (gauche et droite) Les deux canvas du bas affiche ces video apres application d'un filtre de detection de contours.
Source
- from VideoCapture import Device
- from PIL import Image, ImageTk
- import ImageFilter
- from Tkinter import *
- import time
-
- class Affichage(Frame):
- """ Affiche L'image Calculee """
-
- def __init__(self, parent, temps="0:0:0"):
- Frame.__init__(self, parent)
- self.parent = parent
-
- self.CameraGauche = Device(devnum = 0, showVideoWindow =0)
- self.CameraDroite = Device(devnum = 1, showVideoWindow =0)
-
- self.AffichageG = Canvas(self, width = 320, height = 240)
- self.AffichageD = Canvas(self, width = 320, height = 240)
- self.ResultG = Canvas(self, width = 320, height = 240)
- self.ResultD = Canvas(self, width = 320, height = 240)
- self.AffichageG.grid(row=1, column=1)
- self.AffichageD.grid(row=1, column=2)
- self.ResultG.grid(row=2, column=1)
- self.ResultD.grid(row=2, column=2)
- self.Rafraichis()
-
- def Rafraichis(self):
- self.PhotoGauche = self.CameraGauche.getImage()
- self.PhotoDroite = self.CameraDroite.getImage()
-
- self.ImageGauche = ImageTk.PhotoImage(self.PhotoGauche)
- self.ImageDroite = ImageTk.PhotoImage(self.PhotoDroite)
-
- self.AffichageG.create_image(160,120, image = self.ImageGauche)
- self.AffichageD.create_image(160,120, image = self.ImageDroite)
-
- self.PhotoGauche = self.PhotoGauche.filter(ImageFilter.FIND_EDGES)
- self.PhotoDroite = self.PhotoDroite.filter(ImageFilter.FIND_EDGES)
-
- self.PhotoDroite = self.PhotoDroite.filter(ImageFilter.SMOOTH_MORE)
- self.PhotoGauche = self.PhotoGauche.filter(ImageFilter.SMOOTH_MORE)
-
-
- self.CalculGauche = ImageTk.PhotoImage(self.PhotoGauche)
- self.CalculDroite = ImageTk.PhotoImage(self.PhotoDroite)
-
- self.ResultG.create_image(160,120,image = self.CalculGauche)
- self.ResultD.create_image(160,120,image = self.CalculDroite)
-
- self.parent.after(100, self.Rafraichis)
-
-
-
- root = Tk()
- root.title('Vision Stereo ....')
-
- Rendu = Affichage(root)
- Rendu.pack()
-
- root.mainloop()
from VideoCapture import Device
from PIL import Image, ImageTk
import ImageFilter
from Tkinter import *
import time
class Affichage(Frame):
""" Affiche L'image Calculee """
def __init__(self, parent, temps="0:0:0"):
Frame.__init__(self, parent)
self.parent = parent
self.CameraGauche = Device(devnum = 0, showVideoWindow =0)
self.CameraDroite = Device(devnum = 1, showVideoWindow =0)
self.AffichageG = Canvas(self, width = 320, height = 240)
self.AffichageD = Canvas(self, width = 320, height = 240)
self.ResultG = Canvas(self, width = 320, height = 240)
self.ResultD = Canvas(self, width = 320, height = 240)
self.AffichageG.grid(row=1, column=1)
self.AffichageD.grid(row=1, column=2)
self.ResultG.grid(row=2, column=1)
self.ResultD.grid(row=2, column=2)
self.Rafraichis()
def Rafraichis(self):
self.PhotoGauche = self.CameraGauche.getImage()
self.PhotoDroite = self.CameraDroite.getImage()
self.ImageGauche = ImageTk.PhotoImage(self.PhotoGauche)
self.ImageDroite = ImageTk.PhotoImage(self.PhotoDroite)
self.AffichageG.create_image(160,120, image = self.ImageGauche)
self.AffichageD.create_image(160,120, image = self.ImageDroite)
self.PhotoGauche = self.PhotoGauche.filter(ImageFilter.FIND_EDGES)
self.PhotoDroite = self.PhotoDroite.filter(ImageFilter.FIND_EDGES)
self.PhotoDroite = self.PhotoDroite.filter(ImageFilter.SMOOTH_MORE)
self.PhotoGauche = self.PhotoGauche.filter(ImageFilter.SMOOTH_MORE)
self.CalculGauche = ImageTk.PhotoImage(self.PhotoGauche)
self.CalculDroite = ImageTk.PhotoImage(self.PhotoDroite)
self.ResultG.create_image(160,120,image = self.CalculGauche)
self.ResultD.create_image(160,120,image = self.CalculDroite)
self.parent.after(100, self.Rafraichis)
root = Tk()
root.title('Vision Stereo ....')
Rendu = Affichage(root)
Rendu.pack()
root.mainloop()
Conclusion
Petite explication : --J'ai fait un dérivation de la classe Frame. Ca parait étrange, mais j'avais des soucis lors du lancement de root.mainloop(). L'affichage ne se mettais pas a jour ! J'ai donc mis l'appel a cette boucle dans a la fin de ma fonction d'affichage, mais l'occupation processeur grimpais au fur et a mesure (suis un boulet, je sais ;-) ) N'ayant pas trouver le moyen de creer un 'timer', qui interompt la boucle Tk, pour recuperer les images et les filter, je me suis dis qu'en tant que widget, ma classe serais rafraichie durant la mainloop(). J'ai ajouter une fonction Rafraichis(), qui est appelée toute les 100ms, grace a la fonction after(). C'est peu etre pas très élégant, mais ca fonctionne bien!
--Quand au reste du code : Apres définition des deux Webcam (Device 0&1), je recupere les images : GetImage() Puis je transforme les images PIL en image TL , pour l'afficher dans mes canvas. (Photo : PIL & Image : Tk), apres éventuellement application du filtre ImageFilter.FIND_EDGES.
C'est assez lent, et si quelqu'un a des idée , n'hésitez pas. Je posterais le programme complet quand j'aurais finis l'algo permettant de passer des deux images, a une image representant la distance calculée de chaque pixel par rapport aux webcams. (D'ailleurs si quelqu'un a une idée sur comment faire la correlation rapidement, je suis preneur !)
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
scrollbar dans scrollbox avec TKinter [ par MHI ]
Est-ce que quelqu'un sait comment ajouter les scrollbar à une scrollbox :J'ai essayé ceci :lstFile = Tkinter.Listbox(frmMain)lstFile.place(x = 20, y =
checkButton avec TKinter [ par MHI ]
comment faire pour tester si un checkButton est coché ?
WebCam [ par DoudouBidou ]
Après plusieurs recherche je n'ai pas trouvé de script python capable de diffusé une webcam sur un réseaudonc je lance le débat, est-il possible de ré
Probleme avec TKinter [ par titasse ]
Bonjour, je debute en python. J'ai un probleme lorsque je veux importer TKinter avec la commande from TKinter import * j'ai le message suivant : Imp
au sujet de Tkinter et le module turtle [ par nico1900 ]
from turtle import *forward(120)left(90) color('red') forward(80)bon en fait je voulais tester le module turtle avec l e code ci-d
Un Canvas comme dans Tkinter, mais pour wxPython [ par samurize ]
Slt tout le monde. Voila tout est dans le titre (ou a peu pres ) : Je suis à la recherche d'un module pouvant s'integrer da
Taille de widgets sous Tkinter [ par Uims ]
Bonjour, Quelqu"un saurait comment definir la taille d'un widgets sous tkinter??? Exemple: fen 1 = Tk(taille=600) J'espere que je me fait comprend
Ouverture d'un fichier windows (avec Tkinter) [ par Uims ]
Bonjour, Je travaille sous python et Tkinter et j'aurai voulu savoir comment dire a python de demarrer (comme on clique sur un fichier) une applicati
Tkinter et Python [ par Telimektar1er ]
Voila j'ai commencé e python il y a une semaine et jusqu à aujourd'hui aucun problème. Mais voilà, je viens de commencer la cr
help, faire un mastermind en python et en tkinter avant le 24 !!! [ par Crick132 ]
je suis étudiante en 2ème année, je dois réaliser un mastermind en python avec 8 couleurs et 5 combinaisons possibles.si quelqu'un
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
974 Application Server (12.2.4.0)974 APPLICATION SERVER (12.2.4.0)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP mySongBook Player (1.0.0)MYSONGBOOK PLAYER (1.0.0)mySongBook Player est un logiciel gratuit permettant l'accès à une archive de tablatures/partitio... Cliquez pour télécharger mySongBook Player
|