2013-01-18 4 views
1

Hey les potes jusqu'ici je gère OpenCV pour lire un video.avi mais que dois-je faire maintenant pour extraire les images ...?Comment extraire des images à partir d'une vidéo AVI

ci-dessous est le code i écrit à ce jour qui a obtenu ma vidéo jeu:

#include<opencv\cv.h> 
#include<opencv\highgui.h> 
#include<opencv\ml.h> 
#include<opencv\cxcore.h> 



int main(int argc, char** argv) { 
cvNamedWindow("DisplayVideo", CV_WINDOW_AUTOSIZE); 
CvCapture* capture = cvCreateFileCapture(argv[1]); 
IplImage* frame; 
while(1) { 
frame = cvQueryFrame(capture); 
if(!frame) break; 
cvShowImage("DisplayVideo", frame); 
char c = cvWaitKey(33); 
if(c == 27) break; 
} 
cvReleaseCapture(&capture); 
cvDestroyWindow("DisplayVideo"); 
} 
+0

OK ce que je suis en train d'essayer de le faire est de jouer un d'extraire des images vidéo et d'utiliser ces images capturées pour le traitement-à-dire le flou , seuil. Essentiellement je veux dessiner des boîtes de délimitation pendant qu'une vidéo est jouée – Tomazi

Répondre

0

frameest le cadre que vous extrayez. Si vous voulez convertir en un cv :: Mat vous pouvez le faire en créant un tapis avec cette IplImage:

Mat myImage(IplImage); 

There is a nice tutorial on it here.

Cependant, vous le faites à l'ancienne. La nouvelle version de OpenCV a les dernières capacités de capture de la caméra, et vous devriez faire quelque chose comme ceci:

#include "cv.h" 
#include "highgui.h" 

using namespace cv; 

int main() 
{ 
    VideoCapture cap(0); // open the default camera 
    if(!cap.isOpened()) // check if we succeeded 
     return -1; 

    namedWindow("Output",1); 

    while(true) 
    { 
     Mat frame; 
     cap >> frame; // get a new frame from camera 


     //Do your processing here 
     ... 

     //Show the image 

     imshow("Output", frame); 
     if(waitKey(30) >= 0) break; 
    } 

    // the camera will be deinitialized automatically in VideoCapture destructor 
    return 0; 
} 
+0

Beaucoup de thx .... mais comment puis-je dire capturer chaque 5ème image et l'afficher ou le sauvegarder ...? – Tomazi

+0

Il suffit d'utiliser imwrite: http://opencv.willowgarage.com/documentation/cpp/reading_and_writing_images_and_video.html#cv-imwrite. imwrite (myImage, "filename.png"); – Jason

+0

Alors que je peux faire un peu de traitement sur ce cadre i.e flou puis seuil ... – Tomazi

Questions connexes