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

OpenCV Discussion :

Rendre un pixel semi-transparent


Sujet :

OpenCV

  1. #1
    Membre du Club Avatar de Electroniktor
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    150
    Détails du profil
    Informations personnelles :
    Âge : 31
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 150
    Points : 55
    Points
    55
    Par défaut Rendre un pixel semi-transparent
    Bonjour tout le monde !

    Je débute avec open CV et je voudrais réaliser un programme tout simple : ouvrir une fenêtre qui charge une image, la rend à moitié transparente et l'affiche.

    Mais je n'y arrive pas ! Ou plutôt, je bloque sur la partie transparence !
    Voilà ce que j'ai pour l'instant :
    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
    #include <cv.h>
    #include <highgui.h>
     
    using namespace std;
     
    int main()
    {
        IplImage *img = cvLoadImage("img.bmp");
     
        for(int y = 0; y < 311; y++)
        {
            for(int x = 0; x < 534; x++)
            {
                // rendre semi transparent le pixel(x, y) de img;
            }
        }
     
        cvNamedWindow("Test", CV_WINDOW_AUTOSIZE);
        cvShowImage("Test", img);
     
        cvWaitKey(0);
     
        cvDestroyWindow("Test");
        cvReleaseImage(&img);
     
        return 0;
    }
    Merci d'avance !

  2. #2
    Membre habitué
    Inscrit en
    Juin 2003
    Messages
    223
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juin 2003
    Messages : 223
    Points : 145
    Points
    145
    Par défaut
    hummm, c'est pas tres clair ton a moitié transparente...

    tu veux melanger 2 images ou faire en sorte que l'une soit a moitié remplis de noir (car tu ne peux pas faire une image transparante de façon a voir ce qu'il se passe derriere)

  3. #3
    Membre du Club Avatar de Electroniktor
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    150
    Détails du profil
    Informations personnelles :
    Âge : 31
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 150
    Points : 55
    Points
    55
    Par défaut
    Ben en fait je veux juste modifier la valeur alpha des pixels d'une image !

    En fait je veux afficher une image et par dessus en mettre une autre dont la valeur alpha des pixels sera égale à 128 (donc semi-transparent).

  4. #4
    Membre actif Avatar de gassi64
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2008
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2008
    Messages : 255
    Points : 230
    Points
    230
    Par défaut
    Essai alors ça, sachant que CvScalar prend surement comme valeurs (c'est des double attention)
    scalaire.val[0] -> Blue_Value
    scalaire.val[0] -> Green_Value
    scalaire.val[0] -> Red_Value
    scalaire.val[0] -> Alpha_Value

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    CvScalar scalaire = cvScalar(255);
    for(int x=0; x<img->width; x++){
         for(int y=0; y<img->height; y++){
    		scalaire.val[3] = 128;
    		cvSet2D(img, y, x, scalaire);
    	    }
         }
    }

  5. #5
    Membre habitué
    Inscrit en
    Juin 2003
    Messages
    223
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juin 2003
    Messages : 223
    Points : 145
    Points
    145
    Par défaut
    Un code qui est surement plus rapide, et plus jolie;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    //Separation des channel BGR
    cvSplit(im1_bgr, im1_b,im1_g,im1_r,NULL);
     
    //Creation du channel alpha (transparence)
    IplImage *im1_a = cvCreateImage(cvGetSize(im1_bgr),8,1);
    cvSet(im1_a, cvScalar(128),NULL );
     
    //Recomposition d'une image BGRA (4 channels)
    IplImage *im1_bgra = cvCreateImage(cvGetSize(im1_bgr),8,4);
    cvMerge(im1_b,im1_g,im1_r,im1_a,im1_bgra);

Discussions similaires

  1. Rendre un bouton semi-transparent
    Par devocx dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 10/01/2010, 14h21
  2. Curseur png semi transparent
    Par anaxa_gore dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 13/03/2008, 10h09
  3. Composants Semi-Transparent -TGroupBox TButton etc
    Par PiPo123 dans le forum Delphi
    Réponses: 1
    Dernier message: 21/05/2007, 17h18
  4. List semi transparent
    Par ticain dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 23/08/2006, 20h23
  5. [VB6]Semi-transparence pour les imageboxes ou usercontrols
    Par BrianDarkfield dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 06/05/2006, 21h35

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