IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Aide sur VideoCapture


Sujet :

Python

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Aide sur VideoCapture
    Bonjour à tous !!

    J'ai commencé depuis peu la programmation en Python et j'aurais besoin d'un peu d'aide concernant le module VideoCapture.

    J'essaie donc d'utiliser le module VideoCapture. Mon script est pour le moment assez basique : je souhaite récupérer une image prise par la webcam puis ensuite l'afficher dans un canvas (dans un premier temps). Mon script fonctionne mais je ne comprends par pourquoi j'ai aléatoirement une erreur dans la fonction save. Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    # -*- coding:Latin-1 -*-
     
    # Importation des modules externes nécessaires
    from math import *
    from Tkinter import *
    import ImageTk
    from random import *
    from VideoCapture import *
     
    # Création de la fenêtre principal (fen1)
    fen1 = Tk()
     
    # Définition de la webcam
    cam=Device(devnum=0)
     
    # Définition de takePicture
    def takePicture():
        "prendre une image avec la webcam et l'afficher dans can1"
        cam.saveSnapshot('image1.jpg', quality=10)
        global photo, flag, im
        photo = ImageTk.PhotoImage(file ='image1.jpg')
        can1.create_image(176, 144, image = photo)
        if flag > 0:
            can1.after(1000, takePicture)
     
    def start_it():
        "lancement de la capture"
        global flag
        #if flag ==0:
        flag = 1
        takePicture()
     
    def stop_it():
        "arrêt de la capture"
        global flag
        flag = 0
     
    # Création du reste de la fenêtre
    tex1 = Label(fen1, text='Bienvenue dans mon appli !', fg='red')
    tex1.pack(pady=5)
     
    can1 = Canvas(fen1, width =352, height =288)
    can1.pack(side =TOP, padx =20, pady =10)
     
    bou2 = Button(fen1, text ='initialisation', command = start_it)
    bou2.pack(side =LEFT, padx =20, pady =5)
    bou3 = Button(fen1, text ='démarrage', command = stop_it)
    bou3.pack(side =RIGHT, padx =20, pady =5)
    ent1 = Entry(fen1)
    ent1.bind("<Return>")
    ent1.pack(pady =20)
     
    # Création du bouton 'Quitter' (bou1)
    bou1 = Button(fen1, text='Quitter', command = fen1.destroy)
    bou1.pack(pady=5)
     
    # Lancement de l'appli
    fen1.mainloop()
    Voici l'erreur que j'obtiens quand je l'execute :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Exception in Tkinter callback
    Traceback (most recent call last):
    File "C:\Python26\lib\lib-tk\Tkinter.py", line 1410, in __call__
    return self.func(*args)
    File "C:\Python26\lib\lib-tk\Tkinter.py", line 495, in callit
    func(*args)
    File "C:\Python26\SLI-M\main.py", line 27, in takePicture
    cam.saveSnapshot('image1.jpg', quality=10)
    File "C:\Python26\SLI-M\VideoCapture.py", line 193, in saveSnapshot
    self.getImage(timestamp, boldfont, textpos).save(filename, **keywords)
    AttributeError: 'NoneType' object has no attribute 'save'
    Je pensais que mon script essayais parfois de sauvegarder le fichier qu'il était en train d'ouvrir et que cela créait une erreur, mais j'ai diminué la qualité de l'image et le temps d'acquisition et cela ne change rien. L'erreur arrive parfois après 15s d'acquisition, mais des fois après moins d'1s. L'idéal pour moi serait d'utiliser getImage() sans passer par l'enregistrement mais je n'arrive pas à trouver comment faire cela : pourriez vous m'aider pour récupérer l'image (en vue de la manipuler) et l'afficher dans le canevas sans l'enregistrer ?

    Autre souci rencontré : si je souhaite exécuter mon script une deuxième fois, j'obtiens l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Traceback (most recent call last):
    File "C:\Python26\SLI-M\main.py", line 22, in <module>
    cam=Device(devnum=0)
    File "C:\Python26\SLI-M\VideoCapture.py", line 49, in __init__
    self.dev = vidcap.new_Dev(devnum, showVideoWindow)
    Error: Capture Graph could not be created.
    Je dois à chaque fois débrancher et rebrancher la webcam pour pouvoir réexécuter mon scripte : sauriez vous à quoi cela pourrait être dû ?

    Merci d'avance pour toutes vos remarques ou pour l'aide que vous pourrez m'apporter.

    Carote

  2. #2
    Membre émérite
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Points : 2 533
    Points
    2 533
    Par défaut
    Pour
    self.getImage(timestamp, boldfont, textpos).save(filename, **keywords)
    AttributeError: 'NoneType' object has no attribute 'save'
    cela signifie que self.getimage ne renvoi rien à ce moment. Tu peux tester la valeur avant d'appeler le save.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if self.getImage:
        self.getImage(timestamp, boldfont, textpos).save(filename, **keywords)
    Concernant le fait que tu doives débrancher la webcam, n'existe t'il pas une méthode pour fermer le périphérique avant de quitter le programme ?
    Si ce message vous a semblé utile, il est possible qu'il soit utile à d'autres personnes. Pensez au . Et n'oubliez pas le le moment venu !

    On n'a pas à choisir si l'on est pour ou contre la décroissance, elle est inéluctable, elle arrivera qu'on le veuille ou non.

Discussions similaires

  1. demande d'aide sur samba
    Par marcoss dans le forum Développement
    Réponses: 5
    Dernier message: 04/12/2003, 19h38
  2. [CR] besoin d'aide sur les formules
    Par GuillaumeDSA dans le forum Formules
    Réponses: 4
    Dernier message: 10/07/2003, 12h19
  3. Réponses: 2
    Dernier message: 27/02/2003, 01h33
  4. [Kylix] Aide sur BitBlt
    Par mic006 dans le forum EDI
    Réponses: 1
    Dernier message: 10/12/2002, 22h54
  5. Aide sur une fenetre
    Par Ray-j dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 29/11/2002, 08h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo