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

Qt Quick Discussion :

Soustraction d'images successives sur une vidéo


Sujet :

Qt Quick

  1. #1
    Membre confirmé

    Inscrit en
    Décembre 2009
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 164
    Points : 490
    Points
    490
    Par défaut Soustraction d'images successives sur une vidéo
    Salut tout le monde,
    J'essaie de faire du post-processing sur une vidéo en QML avec des shaders. Pour l'instant, je voudrais faire une simple soustraction d'images (après je ferai du calcul de flot optique). Mais je ne vois pas trop comment obtenir des images successives.

    Mon code ressemble ça:
    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
     
    Column {
                width: parent.width/2
                height: parent.height
     
                property int itemsCount : 4
                property int itemsHeight: height /itemsCount
     
                VideoOutput {
                    width: parent.width
                    height: parent.itemsHeight
                    id : video
                    source: player
                }
     
                ShaderEffect {
                    width: parent.width
                    height: parent.itemsHeight
                    id : image1
                    property variant source: ShaderEffectSource {
                        sourceItem: video;
                    }
                    fragmentShader: shadersFactory.simpleShader
                }
     
                ShaderEffect {
                    width: parent.width
                    height: parent.itemsHeight
                    id : image2
                    property variant source: ShaderEffectSource {
                        sourceItem: image1;
                    }
                    fragmentShader: shadersFactory.simpleShader
                }
     
                ShaderEffect {
                    width: parent.width
                    height: parent.itemsHeight
                    id : image3
                    property variant oldSource: ShaderEffectSource {
    sourceItem: image2;}
                    property variant newSource: ShaderEffectSource {
    sourceItem: image1;}
                    fragmentShader: shadersFactory.soustracionShader
                }
    }
    mais je me rends compte que image1 et image2 sont identiques.
    Quelqu'un aurait une idée sur comment faire une sorte snaphot de la vidéo dans une texture à intervalle régulier d'une façon peu couteuse ?

    Merci d'avance.
    MG.

  2. #2
    Rédacteur
    Avatar de Amnell
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    1 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 840
    Points : 5 545
    Points
    5 545
    Par défaut
    Salut,

    J'imagine que si les deux images sont identiques, c'est lié au fait que lorsque le composant VideoOutput s'actualise, cela met à jour image1, qui déclenche son NOTIFY et met alors à jour image2 immédiatement et sans délai. Une solution possible serait de faire en sorte que image2 récupère périodiquement son image via un Timer. L'alternative serait de faire en sorte qu'image2 s'actualise un coup sur deux via la propriété live de ShaderEffectSource. Voici un petit code d'exemple, je n'ai pas la moindre idée de si ça fonctionne ou pas, ne sachant pas si la propriété source envoie ou non un NOTIFY lors de son actualisation :

    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
                ShaderEffect {
                    width: parent.width
                    height: parent.itemsHeight
                    id : image1
                    property variant source: ShaderEffectSource {
                        sourceItem: video;
                    }
                    fragmentShader: shadersFactory.simpleShader
                }
     
                ShaderEffect {
                    width: parent.width
                    height: parent.itemsHeight
                    id : image2
                    property variant source: ShaderEffectSource {
                        sourceItem: image1;
                        Connection {
                            target: image1
                            onSourceChanged{
                                parent.source.live = !parent.source.live;
                            }
                        }
                    }
                    fragmentShader: shadersFactory.simpleShader
                }
    N'oubliez pas de consulter la FAQ Qt ainsi que les cours et tutoriels C++/Qt !

    Dernier article : Débuter avec les Enlightenment Foundation Libraries (EFL)
    Dernières traductions : Introduction à Qt Quick - Applications modernes avec Qt et QML
    Vous cherchez un livre sur Qt 5, Qt Quick et QML ? Créer des applications avec Qt 5 - Les essentiels

  3. #3
    Membre confirmé

    Inscrit en
    Décembre 2009
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 164
    Points : 490
    Points
    490
    Par défaut
    Saut,

    C'était effectivement du côté de la propriété "live" et de la méthode "scheduleUpdate()" qu'il faillait chercher.

    Merci pour la réponse.
    MG.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ajouter logo, bandeau et image sur une vidéo flv
    Par iziitoms dans le forum Flex
    Réponses: 0
    Dernier message: 14/06/2011, 11h55
  2. Ajouter logo, bandeau et image sur une vidéo flv
    Par iziitoms dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 14/06/2011, 11h32
  3. Placer une image sur une vidéo non démarrée
    Par ChPr dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 15/05/2011, 23h57
  4. Problème de capture d'image sur une vidéo
    Par tib_al dans le forum LabVIEW
    Réponses: 2
    Dernier message: 29/07/2008, 10h19
  5. Capture d'image sur une vidéo en cours
    Par Bill14 dans le forum Langage
    Réponses: 2
    Dernier message: 17/10/2005, 12h34

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