Opencvscharr Main.Opencvscharr HistoryHide minor edits - Show changes to output Added lines 126-223:
// Programme d'exemple de la librairie javacvPro // par X. HINAULT - Mars 2012 // Tous droits réservés - Licence GPLv3 // Exemple fonction Scharr - détection de contour par noyau de circonvolution 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/video0", 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() //-- toutes ces formes sont possibles : //opencv.scharr(); // applique le filtre de scharr sur le buffer principal OpenCV avec paramètres par défaut - coeff=1 opencv.scharr(0.4); //applique le filtre de scharr sur le buffer principal OpenCV avec coeff //opencv.scharr(opencv.Buffer,0.5); //applique le filtre scharr sur le buffer OpenCV désigné avec paramètres //--- pour effet "dessin au fusain" opencv.gray(); // passage en niveau de gris opencv.invert(); // pour dessin au trait noir sur blanc 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 123-127:
!! Exemple webcam (:source lang=processing:) (:sourcend:) Changed line 71 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_scharr.png Added lines 1-134:
(:notitle:) (:include HautPageReference:)\\ [[Main.LibrairieJavacvPro|Librairie JavacvPro]] ! Classe OpenCV : scharr() ---- %center%Path: !! Description * Le filtre scharr est un filtre de détection de contour similaire au filtre sobel() basé sur un noyau de convolution mais qui utilise un noyau sensé être plus discriminant. On pourra donc tester ce filtre si le sobel ne donne pas le résultat souhaité. * Pour plus de détails, voir la fonction sobel(). * Ce filtre est basé sur la fonction OpenCV native cvSobel() qui reçoit en paramètre un argument particulier qui active ce filtre : http://opencv.itseez.com/modules/imgproc/doc/filtering.html#sobel * Voir également : sobel(), sobel2() !! Déclaration source java (:source lang=java :) public void scharr() public void scharr(float scaleIn) public void scharr(opencv_core.IplImage iplImgIn, float scaleIn) (:sourcend:) !! Syntaxe (:source lang=processing :) opencv.scharr(); // applique le filtre de scharr sur le buffer principal OpenCV avec paramètres par défaut - coeff=1 opencv.scharr(scale); //applique le filtre de scharr sur le buffer principal OpenCV avec coeff opencv.sobel(iplImg,scale); //applique le filtre scharr sur le IplImage avec paramètres (:sourcend:) !! Paramètres * opencv : un objet OpenCV déclaré avec le constructeur [[OpencvOpencv|OpenCV]]. * scale : coefficient à appliquer sur le résultat du filtre (pour atténuer ou accentuer) * iplImg : Objet IplImage. !! Valeur renvoyée Aucune. L'image source est modifiée. !! Utilisation type * Pour détection de contoure, de façon semblable au filtre de Sobel. !! Exemple (:source lang=processing :) opencv.scharr(); // applique le filtre de scharr sur le buffer principal OpenCV avec paramètres par défaut - coeff=1 opencv.scharr(0.4); //applique le filtre de scharr sur le buffer principal OpenCV avec coeff opencv.sobel(opencv.Buffer,0.5); //applique le filtre scharr sur le buffer OpenCV désigné avec paramètres (: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 :) // Programme d'exemple de la librairie javacvPro // par X. HINAULT - octobre 2011 // Tous droits réservés - Licence GPLv3 // Exemple fonction scharr() 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 --- //-- toutes ces formes sont possibles : //opencv.scharr(); // applique le filtre de scharr sur le buffer principal OpenCV avec paramètres par défaut - coeff=1 opencv.scharr(0.4); //applique le filtre de scharr sur le buffer principal OpenCV avec coeff //opencv.scharr(opencv.Buffer,0.5); //applique le filtre scharr sur le buffer OpenCV désigné avec paramètres //--- pour effet "dessin au fusain" opencv.gray(); // passage en niveau de gris opencv.invert(); // pour dessin au trait noir sur blanc //--- 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 } (: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 |