View  Edit  Attributes  History  Attach  Print  Search


ACCUEIL | DOCUMENTATION | STRATEGIES | TESTS


Librairie JavacvPro

Classe OpenCV : addWeighted()


Description

  • Cette fonction réalise la somme pondérée de 2 images. Pour chaque pixel, on réalise le calcul suivant :

Pixel Destination = ( Pixel Source 1 x coeff1 ) + ( Pixel Source 2 x coeff2) + valeur

Déclaration source java

public void addWeighted (opencv_core.IplImage iplImgSrc1In, float coeff1In, opencv_core.IplImage iplImgSrc2In,  float coeff2In, float delta, opencv_core.IplImage iplImgDest)

Syntaxe

opencv.addWeighted (iplImgSrc1, coeff1, iplImgSrc2,  coeff2, delta, iplImgDest)

Paramètres

  • opencv : un objet OpenCV déclaré avec le constructeur OpenCV.
  • iplImgSrc1, iplImgSrc2 : les 2 images OpenCV sources
  • coeff1, coeff2 : coefficients à appliquer à chaque source
  • delta : la valeur à ajouter à chaque pixel final
  • iplImgDest : image OpenCV de destination

Valeur renvoyée

Aucune. Le résultat est mémorisé dans l'image destination.

Utilisation type

  • Utile pour combiner 2 images entre elles. A noter que si on utilise le coefficient 0.5 pour chaque image, on obtient la moyenne des 2 images.

Exemple

L'exemple complet suivant est à copier dans Processing et est exécutable immédiatement si vous êtes connectés à internet :


// Programme d'exemple de la librairie javacvPro
// par X. HINAULT - octobre 2011
// Tous droits réservés - Licence GPLv3

// Exemple fonction addWeighted()

import monclubelec.javacvPro.*; // importe la librairie javacvPro

PImage img1, img2, imgDest;

String url1="http://www.mon-club-elec.fr/mes_images/online/lena.jpg"; // String contenant l'adresse internet de l'image à utiliser
String url2="http://www.mon-club-elec.fr/mes_images/online/Water_bubbles.jpg"; // String contenant l'adresse internet de l'image à utiliser

OpenCV opencv; // déclare un objet OpenCV principal

void setup(){ // fonction d'initialisation exécutée 1 fois au démarrage

        //-- charge image utilisée ---
        img1=loadImage(url1,"jpg"); // crée un PImage contenant le fichier à partir adresse web
        img2=loadImage(url2,"jpg"); // crée un PImage contenant le fichier à partir adresse web

        //--- initialise OpenCV ---
        opencv = new OpenCV(this); // initialise objet OpenCV à partir du parent This
        opencv.allocate(img1.width, img1.height); // initialise les buffers OpenCv à la taille de l'image

        opencv.copy(img1); // charge le PImage dans le buffer OpenCV
        opencv.remember(); // mémorise l'image dans buffer mémory

        opencv.copy(img2); // charge le PImage dans le buffer OpenCV

        //--- initialise fenêtre Processing
        size (opencv.width()*3, opencv.height()); // crée une fenêtre Processing de la 2xtaille du buffer principal OpenCV
        //size (img.width, img.height); // aalternative en se basant sur l'image d'origine

        //--- affiche image de départ 1 ---        
        image(opencv.getMemory(),0,0); // affiche le buffer Memory OpenCV dans la fenêtre Processing

        //--- affiche image de départ 2 ---        
        image(opencv.getBuffer(),opencv.width(),0); // affiche le buffer principal OpenCV dans la fenêtre Processing

        //--- opérations sur images ---
        opencv.addWeighted(opencv.Buffer, 0.25, opencv.Memory, 0.75, 0, opencv.Buffer); // combine les 2 images

        //--- affiche image finale ---
        image(opencv.getBuffer(),opencv.width()*2,0); // affiche le buffer principal OpenCV dans la fenêtre Processing



       noLoop(); // stop programme        
}


void  draw() { // fonction exécutée en boucle

}

 

Commentaires utilisateurs

Aucun

Cette page est une création originale de Xavier HINAULT - Tous droits réservés - 2011