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 :

Additionner des images


Sujet :

OpenCV

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

    Informations forums :
    Inscription : Octobre 2007
    Messages : 2
    Par défaut Additionner des images
    Bonjour, j'utilise openCV pour additionner 10 images

    j'utilise cvAdd mais le résultat est bizarre car les pixels de la somme d'images sont tous à 255

    y a t 'il une autre fonction pour additionner des images?

  2. #2
    Membre éprouvé Avatar de hunta_kirua
    Profil pro
    Inscrit en
    Février 2008
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 110
    Par défaut
    Salut,

    la fonction cvAdd additionne bien les images mais reste limité au format d'origine, a priori IPL_DEPTH_8U (soit 255). Pour additionner au delà, il est possible de convertir d'abord en IPL_DEPTH_32F. Jette un oeil ci-dessous :

    //image d'origine imgU8 de type IplImage*

    int Scale=1;
    int Shift=0;

    CvSize SzU8;
    SzU8.width = imgU8->width;
    SzU8.height = imgU8->height;

    IplImage* imgF32 = cvCreateImage(SzU8, IPL_DEPTH_32F , imgU8->nChannels);
    cvConvertScale(imgU8,imgF32,Scale,Shift);

    En espérant que ça t'aidera,

    A+

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mai 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 8
    Par défaut
    il y a aussi cvAcc qui te permet d'additionner les images deux à deux.
    le résultat doit être codé sur 32 bits, puis convertis en 8 bits.
    et si tu divises pas par le nombre d'image, tu auras toujours tes saturations paske 255+12 = 255 à cause du dépassement de capacité.


    IplImage* moyenne = cvCreateImage(cvGetSize(img), 32, 1);
    // moyenne = 32 bits

    IplImage* resultat8bits = cvCreateImage(cvGetSize(img), 8, 1);


    cvZero(moyenne);

    //sommation : on suppose que le tableau d'images buf contient tes 10 images
    for(int i = 0; i < N; i++ )
    cvAcc( buf[i], moyenne);
    // buf[i] = 8 bits

    // conversion 32 bits->8 bits et mise à l'échelle
    cvConvertScale( moyenne, resultat8bits, 1./N, 0);
    cvReleaseImage(&moyenne);

Discussions similaires

  1. Afficher des images sous directX
    Par cyberlewis dans le forum DirectX
    Réponses: 17
    Dernier message: 12/07/2004, 12h07
  2. [CR] Additionner des heures
    Par sbis dans le forum Formules
    Réponses: 4
    Dernier message: 22/03/2004, 15h34
  3. Interbase 6 et le type des images?
    Par AnestheziE dans le forum InterBase
    Réponses: 6
    Dernier message: 30/10/2003, 10h48
  4. question sur le format des images ..
    Par vbcasimir dans le forum Langages de programmation
    Réponses: 7
    Dernier message: 28/08/2003, 12h08
  5. [TP][MULTI-PROBLEME]Comment afficher des images pcx
    Par mikoeur dans le forum Turbo Pascal
    Réponses: 7
    Dernier message: 24/10/2002, 13h57

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