openCV

openCV - C++ - Programmation

Marsh Posté le 16-05-2006 à 16:38:36    

Bonjour!!
 
 
Je dois, pour mon projet de fin d'études, récupérer et stocker en format bmp toutes les images filmées par ma caméra lorsque je lance un enregistrement.Je m'affranchis donc de la vidéo avi.
 
Je viens de découvrir opencv qui me semble tout à fait adapté à ce que je désire faire. Cependant, j'ai quelques soucis à comprenrde les codes qui sont en exemple dans la doc opencv.  
 
Si quelqu'un connait le code qui fait exactement cela, car je pense que ça existe, je veux bien un peu d'aide s'il vous plaît.
 
Merci d'avance pour toute réponse qui m'aidera à avancer. :)  
 

Reply

Marsh Posté le 16-05-2006 à 16:38:36   

Reply

Marsh Posté le 16-05-2006 à 16:58:48    

Bonjour,  
J'utilise également OpenCV (pour mon projet de fin d'études itou). Pour l'instant je n'utilise pas encore les possibilités vidéo de cette librairie, je fais uniquement du traitement d'images. Mais je pense que tu trouveras ton bonheur avec l'un de ces liens, http://groups.yahoo.com/group/OpenCV/ ou http://opencvlibrary.sourceforge.net/ . Seul bémol, il faut que tu maitrises la langue de Shakespeare, car il n'y a pas à ma connaissance de tuto OpenCV en français. Bonne continuation

Reply

Marsh Posté le 16-05-2006 à 17:04:32    

Je regarde ça, Merci beaucoup!!!

Reply

Marsh Posté le 18-05-2006 à 09:34:51    

Bonjour!!
 
Ces liens m'ont bien aidés, j'ai pu programmé la capture et l'enregistrement d'une vidéo provenant de ma caméra. Maintenant je dois enregistrer les images en .bmp dans un dossier au lieu de les écrire dans un .avi.  
Penses-tu cela possible avec cvsaveimage, je n'arrive pas à bien l'appliquer...
 
Merci

Reply

Marsh Posté le 19-05-2006 à 09:30:41    

oui cela est possible avec cvSaveImage + le path de sauvegarde.
le path doit etre valide (pas de dossier manquant) et l'extension précise à la fonction sous quel format on sauve l'image.  
En ce qui concerne la sauvegarde en jpg, on ne peut pas choisir le taux de compression (il est fixé à 75 ...de mémoire) à moins de modifier les codes des lib puis de les recompiler...ce qui à mon avis dépasse surement le but du projet
 
@ pluche


---------------
Fight with the best, die with the rest ...
Reply

Marsh Posté le 22-05-2006 à 09:14:44    

ok merci, je regarde ça!!

Reply

Marsh Posté le 22-05-2006 à 10:32:13    

Salut!!
 
Voici le code que j'ai réalisé pour le moment mais je ne vois pas comment y appliquer le cvSaveImage, peux -tu me mettre sur la voie stp?
 
Merci
 
 
#pragma comment (lib,"highgui.lib" )
 
#include "cv.h"
#include "highgui.h"
#include <stdio.h>
 
 
// Capture vidéo (reconnaissance caméra)
//A simple camera capture framework
int main(){
 
 int isColor=1;
 int fps=15;
 int frameW=640;
 int frameH=480;
 
 IplImage* img=0;
 int nFrames=50;
 int i;
 
 CvCapture* capture=cvCaptureFromCAM(CV_CAP_ANY);
 if(capture){
  printf("OK!!\n" );
 }else{
  fprintf(stderr,"ERROR: capture is NULL \n" );
  getchar();
  return -1;
 }
 
 //Create a window in which the captured images will be presented
 cvNamedWindow("Capture caméra", CV_WINDOW_AUTOSIZE);
 
 //Show the image captured from the camera in the window and repeat
 while(1){
 
 
  //Get one frame
  IplImage* frame=cvQueryFrame(capture);
  if(!frame){
   fprintf(stderr,"ERROR:frame is null...\n" );
   getchar();
   break;
  }
  cvShowImage("Capture caméra",frame);
  int c=cvWaitKey(50);
   
// Quand on presse ESC, l'enregistrement commence et prend le nombre d'images nFrames indiqué.
  //If ESC key pressed, c=0x10001B under OpenCV 0.9.7 (linux version),
  //remove higher bits using AND operator
  if((c&255) == 27)
   break;
 
CvVideoWriter* writer = cvCreateVideoWriter("c:\\out.avi", CV_FOURCC('M','J','P','G'),fps,cvSize(frameW,frameH),isColor);
   
 
for(i=0;i<nFrames;i++){
 cvGrabFrame (capture);//Capture a frame
 img=cvRetrieveFrame(capture);//retrieve the captured frame
 cvWriteFrame(writer, img);//add the frame to the file
}
 
 
 }
 
 //Release the capture device housekeeping
 cvReleaseCapture(&capture);
 cvDestroyWindow("Capture caméra" );
 cvReleaseVideoWriter(&writer);
 
 
 return 0;
}

Reply

Marsh Posté le 22-05-2006 à 18:50:30    

bonjour,
mis a part que je ne saisis pas bien ce que fais ton code (il sauve systematiquement 50 image en mjpg ???)  
voila ce que je 'ferais' :
je remplace le bloc :
 
CvVideoWriter* writer = cvCreateVideoWriter("c:\\out.avi", CV_FOURCC('M','J','P','G'),fps,cvSize(frameW,frameH),isColor);
   
 
for(i=0;i<nFrames;i++){
 cvGrabFrame (capture);//Capture a frame
 img=cvRetrieveFrame(capture);//retrieve the captured frame
 cvWriteFrame(writer, img);//add the frame to the file
}  
par le bloc
  if((c&255) == 's')//! on sauve si on appuie sur 's'
  {
   img=cvRetrieveFrame(capture);//recupere la derniere image et construit img
   cvSaveImage( "c:\\pipo.jpg", img);//sauve img à la racine sous le joli nom de pipo.jpg
  }  
 
bon là tu ecrases à chaque fois la derniere image, cela se palit en faisant un tit incrément à chaque fois que tu appuies sur 's' et en concatenant, mais bon...là je vais pas te prendre pour un neuneu...c'est juste pour te montrer "l'esprit" :)
 
addendum : le taux de compression est fixé à 90 dans la lib.
si tu as besoin d'autres details  
 
@ pluche

Reply

Marsh Posté le 22-05-2006 à 18:50:59    

oups... si tu as besoin d'autres details mail moi !
desolé j'ai deux mains gauches et dix pouces ce soir

Reply

Marsh Posté le 23-05-2006 à 09:29:18    

ok Merci pour la réponse en tout cas!!!!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed