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

C++Builder Discussion :

Flux vidéo via un panel et superposé une image


Sujet :

C++Builder

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2013
    Messages : 13
    Points : 10
    Points
    10
    Par défaut Flux vidéo via un panel et superposé une image
    J'utilise C++ Builder pour dévellopé une application.

    Je récupère un flux vidéo via usb (frame grabber 2253) et je l'affiche dans un panel.

    Maintenant j'aimerais affiché une image par dessus la vidéo et la problème.

    Même et mettant le panel comme parent de mon image l'image est affiché "derrière" le flux vidéo.


    Une idée, un conseil?

    Merci d'avance

  2. #2
    Membre actif Avatar de Argol_Medusa
    Homme Profil pro
    Ingénieur Radiofréquences
    Inscrit en
    Août 2005
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Radiofréquences
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 208
    Points : 242
    Points
    242
    Par défaut
    Personnellement après avoir essayer plusieurs choses qui marchaient plus ou moins bien, j'ai carrément ajouté une TForm transparente dessus.

    Définie la couleur transparente dans les options de ta form, colle un TImage sur ta form que tu ajustes à la taille de la video ( Form1->Width = Form1->Panel1->Width; Image1->Width = Form1->Width etc. ) et utilise une couleur unique pour faire la couleur de transparence ( couche alpha ), genre le violet pur.

    De cette manière tu peux avoir une découpe parfaite avec une image en BMP ( par exemple)

    J'ai utilisé cette technique sur 2 projets, une video .wmv lu sur un TPanel via le player C++ Builder classique + une image dessus pour couper les angles, et sur un second projet une video en provenance d'une webcam de drone avec image d'affichage de données télémétriques, et obtenu de bon résultats dans les 2 cas avec cette technique.
    Désolé, on savait pas que c'était impossible, alors on l'a fait

  3. #3
    Membre régulier
    Inscrit en
    Août 2010
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 123
    Points : 93
    Points
    93
    Par défaut
    Bonne idée Argol_Medusa.
    Juste un petit bémol sur la découpe parfaite, car il n'y a pas d'anti aliasing, n'est ce pas ? (donc plutôt faire des carrés).

    Peut être une chose à essayer : mettre un nouveau panel (avec comme parent le panel du flux video) et mettre l'image dans ce nouveau panel.
    Le Panel est un WinControl (~fenêtre et l'image un GraphicControl), donc ça peut éventuellement fonctionner....

    Sinon si c'est possible, convertir le flux video en Bitmap... Ajouter des infos sur cette bitmap... puis l'afficher.
    J'ai déjà utilisé cette technique avec une Webcam.

  4. #4
    Membre actif Avatar de Argol_Medusa
    Homme Profil pro
    Ingénieur Radiofréquences
    Inscrit en
    Août 2005
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Radiofréquences
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 208
    Points : 242
    Points
    242
    Par défaut
    Je crois que j'avais déjà essayé et ça n'avait pas marché avec 2 Tpanel, mais l'idée était bonne ^^

    Et pour la solution de convertir la video en bmp oui ça marche, mais le problème c'est que c'est beaucoup plus lent, on ne bénéficie alors plus de l'accélération matériel.
    En fait quand on assign à la video un TPanel, ça ne passe même pas par les couches hautes, c'est directement la carte video qui gère je pense.
    La preuve : sous windows XP le seul moyen de faire un screenshot d'une Tpanel en train de lire une video, c'est d'aller dans propriété -> écran -> etc et de cliquer sur "désactiver l'accélération matériel", sinon on a un gros pavé noir à la place de la video lors du screenshot.

    Alors pour l'antialiasing, en fait le problème vient effectivement du fait que la transparence n'est pas gérée par le bitmap, tu as raison, donc perso j'ai "triché" un peu et contourné le problème en mettant une seconde form avec un certain % de transparence ( une bitmap aussi, mais sur une TForm légèrement transparente ).
    Je sais pas comment expliquer, mais ça permet d'ajouter la fameuse couche d'antialiasing autour je ne sais pas si je suis clair.

    Un exemple concret vaut mieux qu'un long discourt :



    La video au centre en provenance d'un moteur 3D ou d'une simple video WMV, et j'ai mis des icones derrière pour montrer la couche transparente, on voit bien sur les cheveux et sur la fumée.
    Mais on peut suivant l'application faire cela tout autour de la form principale afin d'obtenir un fondu progressif ( le fameux "anti-aliasing" dont tu parles ).
    Évidement on peut ajouter une seconde form avec un % de transparence encore plus élevé pour affiner si nécessaire.
    Désolé, on savait pas que c'était impossible, alors on l'a fait

Discussions similaires

  1. insérer un petit formulaire sur le panel qui contient une image de fond
    Par amAtunisian dans le forum Interfaces Graphiques en Java
    Réponses: 1
    Dernier message: 08/06/2012, 13h28
  2. Lire / Ecrire flux vidéo via réseau local
    Par milanoran dans le forum C++
    Réponses: 10
    Dernier message: 25/10/2010, 23h46
  3. Récupérer un flux vidéo sur une MIDlet
    Par barcelona dans le forum Java ME
    Réponses: 1
    Dernier message: 11/10/2006, 20h02
  4. [FLASH] Lire une vidéo via Media player ?
    Par tomguiss dans le forum Flash
    Réponses: 1
    Dernier message: 30/11/2005, 23h14
  5. [C#]visualiser le flux vidéo d'une caméra Axis
    Par nokta dans le forum Windows Forms
    Réponses: 6
    Dernier message: 21/11/2005, 19h07

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