1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
| package projetcapturewebcam;
import com.googlecode.javacv.OpenCVFrameGrabber;
import com.googlecode.javacv.cpp.opencv_core;
import static com.googlecode.javacv.cpp.opencv_highgui.cvSaveImage;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
public class Recorder extends Thread {
// déclaration de l'image
opencv_core.IplImage img;
// création du flux vidéo
OpenCVFrameGrabber video = new OpenCVFrameGrabber(0);
boolean runned= true;
boolean capture = false;
int i = 0;
public Recorder(JLabel labelImg) {
// récupère le label depuis l'IHM
// Le label prend la valeur du label reçue
this.labelImg = labelImg;
}
JLabel labelImg;
public JLabel getLabelImg() {
return labelImg; //renvoie le nouveau label à IHM
}
public void setRunned(boolean isRunned) {
// récupère False ou True selon les appuies sur Start ou Stop
this.runned = isRunned;
}
public void setCapture(String nameFile) {
// récupère le nom du fichier
// enregistre le screen
cvSaveImage(nameFile, img);
}
// LECTURE
// lance le thread (surcharge de la class)
public void run() {
try {
//lancement de la vidéo
video.start();
if (video == null) {
// vérifie l'ouverture du flux vidéo
System.out.printf("%s", " Ouverture du flux vidéo impossible !\n");
}
while (isAlive()) {
//Boucle du thread
// L E C T U R E
if (runned == true) {
// On lance la vidéo
//récupére image par image le flux vidéo
img = video.grab();
// A F F I C H A G E
if (img != null ) {
// Il y a une image
// met l'image dans le LabelImage
// Enregistrement image par image de la vidéo cvSaveImage("video"+(i++)+".jpg", img);
this.labelImg.setIcon(new ImageIcon( img.getBufferedImage() ));
}
}
}
} catch (Exception a) {
a.printStackTrace();
}
}
} |
Partager