View  Edit  Attributes  History  Attach  Print  Search


ACCUEIL | DOCUMENTATION | STRATEGIES | TESTS


Librairie JavacvPro

Classe OpenCV : copy()


Description

  • Cette fonction charge un objet PImage dans le buffer principal. Cette fonction permet d'appliquer toutes les fonctions de la librairie à une image PImage une fois qu'elle a été chargée dans le buffer principal.
  • Utilisation avancée : cette fonction peut également être utilisée pour charger un objet IplImage dans le buffer principal (conteneur d'image natif de la fonction OpenCV)
  • Voir également : image(), getBuffer()

Déclaration source java

public void copy (PImage imgIn)
public void copy (opencv_core.IplImage iplImgIn)

Syntaxe

opencv.copy(img);

Paramètres

  • opencv : un objet OpenCV
  • img : un objet PImage ou un objet IplImage

Valeur renvoyée

Aucune. L'image est chargée dans le buffer principal OpenCV.

Exemple


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

// Exemple fonction copy()

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

PImage img;

String url="http://www.mon-club-elec.fr/mes_images/online/lena.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 ---
        img=loadImage(url,"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(img.width, img.height); // initialise les buffers OpenCv à la taille de l'image

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

        //--- initialise fenêtre Processing
        size (opencv.width(), 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 ---        
        image(opencv.getBuffer(),0,0); // affiche le buffer principal OpenCV dans la fenêtre Processing


       noLoop(); // stop programme      

}


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

}
 

Durée d'exécution de la fonction

La version javacvPro 0.4 apporte une amélioration significative du transfert du PImage vers le buffer OpenCV, divisant d'un facteur 10 à 20 les délais précédemment obtenus :

  • ainsi sur un Intel Dual Core à 2.33Gz (sous Ubuntu 10.04 LTS avec la version OpenCV 2.3.1) pour une image de 320x240 donne une durée moyenne pour chaque exécution de 2 à 3ms en mode interprété !
  • sur une carte Intel N2800 1.86 Gz (sous Ubuntu 11.10 avec la version OpenCV 2.3.1) pour une image de 320x240 donne une durée moyenne pour chaque exécution de 5 ms en mode interprété !

Ces nouvelles valeurs permettent d'obtenir des fréquences maximales potentielles de traitement de 60 fps à 200 fps selon la machine. Dans tous les cas, une fréquence de traitement d'image de 30 fps est réellement atteinte même sur des machines modestes !

  • La réalisation de 100 exécutions successives de la fonction dans Processing (sur un Intel Dual Core à 2.33Gz sous Ubuntu 10.04 LTS avec la version OpenCV 2.3.1) pour une image de 320x240 donne une durée moyenne pour chaque exécution de :
    • de 28 ms en mode "interprété" soit une fréquence maximale potentielle de 35 fps.
    • de 16 ms en mode "compilé" soit une fréquence maximale potentielle de 62 fps.

Commentaires utilisateurs

  • La rapididté d'exécution de cette fonction est essentielle pour les traitements d'image sur un flux vidéo !

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