Opencvmultiply Main.Opencvmultiply HistoryHide minor edits - Show changes to output Added lines 117-205:
// Programme d'exemple de la librairie javacvPro // par X. HINAULT - Mars 2012 // Tous droits réservés - Licence GPLv3 // Exemple fonction Multiply import codeanticode.gsvideo.*; // importe la librairie vidéo GSVideo qui implémente GStreamer pour Processing (compatible Linux) // librairie comparable à la librairie native vidéo de Processing (qui implémente QuickTime..)- Voir Reference librairie Video Processing // cette librairie doit être présente dans le répertoire modes/java/libraries du répertoire Processing (1-5) // voir ici : http://gsvideo.sourceforge.net/ import monclubelec.javacvPro.*; // importe la librairie javacvPro PImage img; GSCapture cam; // déclare un objet GSCapture représentant une webcam // L'objet GSCapture étend PImage - se comporte comme un conteneur des frames issues de la webcam OpenCV opencv; // déclare un objet OpenCV principal int widthCapture=320; // largeur image capture int heightCapture=240; // hauteur image capture int fpsCapture=30; // framerate de Capture int millis0=0; // variable mémorisation millis() void setup(){ // fonction d'initialisation exécutée 1 fois au démarrage //--- initialise fenêtre Processing size (widthCapture*2, heightCapture); // 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 frameRate(fpsCapture); // taux de rafraichissement de l'image //---- initialise la webcam --- cam = new GSCapture(this, widthCapture, heightCapture); // forme simplifiée //cam = new GSCapture(this, widthCapture, heightCapture,"v4l2src","/dev/video1", fpsCapture); // Initialise objet GSCapture désignant webcam - forme complète //--- initialise OpenCV --- opencv = new OpenCV(this); // initialise objet OpenCV à partir du parent This opencv.allocate(widthCapture, heightCapture); // initialise les buffers OpenCv à la taille de l'image cam.start(); // démarre objet GSCapture = la webcam } void draw() { // fonction exécutée en boucle // Code capture GSVideo if (cam.available() == true) { // si une nouvelle frame est disponible sur la webcam background(0); // fond noir entre 2 images //------ gestion image webcam par GSCapture ------ cam.read(); // acquisition d'un frame //image(cam1, 0, 0); // affiche image //set(0, 0, cam); // affiche image - plus rapide //------- gestion image par Opencv ---------- //imgSrc=cam1.get(); // récupère l'image GS video dans Pimage //opencv.copy(imgSrc); // charge l'image dans le buffer openCV millis0=millis(); // mémorise millis() opencv.copy(cam.get()); // autre possibilité - charge directement l'image GSVideo dans le buffer openCV println("Durée chargement buffer OpenCV=" + (millis()-millis0)+"ms."); //--- affiche image de départ avant opération sur image --- image(opencv.getBuffer(),0,0); // affiche le buffer principal OpenCV dans la fenêtre Processing //--- opérations sur image --- millis0=millis(); // mémorise millis() //opencv.multiply(3.5); // multiplie tous les pixels par une valeur opencv.multiply(2,2,0.2); // multiplie tous les pixels avec une valeur différente par canal println("Durée traitement image par OpenCV=" + (millis()-millis0)+" ms."); //--- affiche image finale --- image(opencv.getBuffer(),widthCapture,0); // affiche le buffer principal OpenCV dans la fenêtre Processing } // fin if available } // fin draw Added lines 111-116:
(:sourcend:) !! Exemple webcam (:source lang=processing:) Changed line 69 from:
import monclubelec. to:
import monclubelec.javacvPro.*; // importe la librairie javacvPro Changed line 8 from:
%center%Path: to:
%center%Path:/mes_images/javacvpro/javacvpro_exemple_multiply.png Changed lines 12-13 from:
* Cette fonction multiplie la valeur de tous les pixels du buffer principal, ou d'un objet IplImage, par un coefficient fixe, identique ou différent pour les 3 canaux RGB. to:
* Cette fonction multiplie la valeur de tous les pixels du buffer principal, ou d'un objet IplImage, par un coefficient fixe, identique ou différent pour les 3 canaux RGB. A la différence de la fonction mixerRGB, les canaux ne sont pas mélangés dans un même canal de sortie. Changed line 19 from:
public opencv_core.IplImage multiply (opencv_core.IplImage iplImgIn, double coeffRIn, double coeffGIn, double coeffBIn) to:
public opencv_core.IplImage multiply (opencv_core.IplImage iplImgIn, double coeffRIn, double coeffGIn, double coeffBIn, boolean debugIn) Added lines 27-29:
opencv.multiply(val); // multiplie tous les pixels du buffer principal par coefficient identique pour tous les canaux opencv.multiply(valR, valG, valG); // multiplie pixels du buffer par principal coefficient différent par canal opencv.multiply(iplImg, valR, valG, valG, debug); // multiplie pixels objet IplImage par coefficient différent par canal Changed lines 36-37 from:
* to:
* val (double) : coefficient à appliquer à tous les pixels * valR, valR, valG (double) : coefficients à appliquer aux pixels de chaque canal * iplImg : Objet IplImage. * debug : drapeau activation message de debug - false : pas de message, true : messages affichés Changed lines 43-44 from:
Aucune to:
Aucune. L'image source ou l'image du buffer principal est modifiée. Changed lines 47-48 from:
* to:
* Parfois intéressant pour intensifier un canal par rapport à un autre ou réaliser une teinte de l'image dans une couleur particulière. Changed lines 53-55 from:
to:
opencv.multiply(3.5); // multiplie tous les pixels par une valeur opencv.multiply(0.5,1.0,2.0); // multiplie tous les pixels avec une valeur différente par canal Added lines 62-109:
// Programme d'exemple de la librairie javacvPro // par X. HINAULT - octobre 2011 // Tous droits réservés - Licence GPLv3 // Exemple fonction blur() import monclubelec.javacvProc.*; // 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()*2, 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 --- image(opencv.getBuffer(),0,0); // affiche le buffer principal OpenCV dans la fenêtre Processing //--- opérations sur image --- //opencv.multiply(3.5); // multiplie tous les pixels par une valeur opencv.multiply(0.5,1.0,2.0); // multiplie tous les pixels avec une valeur différente par canal //--- affiche image finale --- image(opencv.getBuffer(),opencv.width(),0); // affiche le buffer principal OpenCV dans la fenêtre Processing noLoop(); // stop programme } void draw() { // fonction exécutée en boucle } Added lines 1-69:
(:notitle:) (:include HautPageReference:)\\ [[Main.LibrairieJavacvPro|Librairie JavacvPro]] ! Classe OpenCV : multiply() ---- %center%Path: !! Description * Cette fonction multiplie la valeur de tous les pixels du buffer principal, ou d'un objet IplImage, par un coefficient fixe, identique ou différent pour les 3 canaux RGB. * Voir également : mixerRGB() !! Déclaration source java (:source lang=java :) public opencv_core.IplImage multiply (opencv_core.IplImage iplImgIn, double coeffRIn, double coeffGIn, double coeffBIn) public void multiply (double coeffIn) (:sourcend:) !! Syntaxe (:source lang=processing :) (:sourcend:) !! Paramètres * opencv : un objet OpenCV déclaré avec le constructeur [[OpencvOpencv|OpenCV]]. * !! Valeur renvoyée Aucune !! Utilisation type * !! Exemple (:source lang=processing :) (:sourcend:) %center%%red% L'exemple complet suivant est à copier dans Processing et est exécutable immédiatement si vous êtes connectés à internet : (:source lang=processing :) (:sourcend:) !! Commentaires utilisateurs >>bgcolor=#dfd border='3px dotted green'<< Aucun >><< (:include BasPageReference:) Cette page est une création originale de Xavier HINAULT - Tous droits réservés - 2011 |