begin process at 2012 05 29 05:39:11
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Divers

 > 

Extraction des images d'une vidéo


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Extraction des images d'une vidéo

mercredi 19 avril 2006 à 09:45:36 | Extraction des images d'une vidéo

elo29

Bonjour!! Dans le cadre de mon projet, j'ai besoin d'extraire les images d'une vidéo, or la caméra ne le fait pas elle-même et je suis un peu perdue quant à la façon de réaliser ce travail. J'ai trouvé un code qui pourrait le faire à cette adresse "www.codeproject.com/audio/ExtractAVIFrames.asp" mais je n'arrive pas à le faire marcher. J'ai mis la fonction CreateFromPackedDIBPointer en .h et à la fin du programme principal j'ai mis, camera_capture étant mon .avi : int main() { CString camera_capture; ExtractAVIFrames(camera_capture); return 0; } Je ne suis pas très forte en C donc il se peut que je fasse une grosse erreur dans l'utilisation de ce code. Je travaille avec VC++. Pouvez-vous m'aider à résoudre ce problème svp? Merci
mercredi 19 avril 2006 à 22:00:29 | Re : Extraction des images d'une vidéo

louis14

cette fonction , que j'utilise sert à extraire une image d'un fichier vidéo AVI.
On trouve les fonctions que tu recherches dans la bibliothèque vfw  (vidéo for windows). il faut lire l'aide sur les macros disponibles.
il faut que je cherche le code. en tout cas camera capture doit avoir ue valeur (un nom de fichier si tu veux que ça fonctionne.

louis14
mercredi 19 avril 2006 à 22:08:30 | Re : Extraction des images d'une vidéo

louis14

bon voilà le code que j'utilise ( qui vient de codeproject) et qui fonctionne

AVIFileInit();

LONG m_curframe = MCIWndGetPosition(m_Video);//ici on récupère l'image courante de la vidéo

//declaration

PAVISTREAM m_avistream = NULL;

AVISTREAMINFO m_streaminfo;

HIC m_decomp = NULL;

long m_fmtlen, //

m_buflen; //

long m_startframe,

m_endframe;

LPBITMAPINFOHEADER m_srcfmt = NULL;

BYTE* m_rawdata = NULL;

BYTE* m_finaldata = NULL;

PGETFRAME gapgf = NULL;

//Ouverture du fichier

long r;

if (m_avistream)

AVIStreamRelease( m_avistream ), m_avistream=NULL;

r=AVIStreamOpenFromFile( &m_avistream, m_Path,

streamtypeVIDEO, 0, OF_READ | OF_SHARE_EXCLUSIVE, 0 );

TRACE("AVIStreamOpenFromFile: %s\n", r==0 ? "OK" : "failed" );

//»ñµÃ»º³åÇøµÄ³¤¶È

r=AVIStreamFormatSize( m_avistream, 0, &m_fmtlen );

TRACE("AVIStreamFormatSize: %s\n", r==0 ? "OK" : "failed" );

int formatsize=m_fmtlen+sizeof(RGBQUAD)*256;

if (m_srcfmt)

delete [] m_srcfmt;

m_srcfmt = (LPBITMAPINFOHEADER)new BYTE[formatsize];

ZeroMemory( m_srcfmt, formatsize );

if (m_dstfmt)

delete [] m_dstfmt;

m_dstfmt = (LPBITMAPINFOHEADER)new BYTE[formatsize];

ZeroMemory( m_dstfmt, formatsize );

r=AVIStreamReadFormat( m_avistream, 0,

m_srcfmt,

&m_fmtlen );
TRACE("AVIStreamReadFormat: %s\n", r==0 ? "OK" : "failed" );

TRACE(" --- %s ---\n", m_Path);

TRACE(" biSize: %d\n", m_srcfmt->biSize );

TRACE(" biWidth x biHeight: %dx%d\n", m_srcfmt->biWidth, m_srcfmt->biHeight );

if (m_srcfmt->biPlanes != 1)

TRACE(" - biPlanes: %d\n", m_srcfmt->biPlanes );

TRACE(" biBitCount: %d\n", m_srcfmt->biBitCount );

CString comp;

switch (m_srcfmt->biCompression)

{

case BI_RGB:

comp="BI_RGB";

break;

case BI_RLE8:

comp="BI_RLE8";

break;

case BI_RLE4:

comp="BI_RLE4";

break;

case BI_BITFIELDS:

comp="BI_BITFIELDS";

break;

}

TRACE(" biCompression: %s\n", comp );

TRACE(" biSizeImage: %d\n", m_srcfmt->biSizeImage );

TRACE(" ------------------\n");

memcpy( m_dstfmt, m_srcfmt, m_fmtlen );

m_startframe = AVIStreamStart( m_avistream );

TRACE("stream start: %d\n", m_startframe);

m_endframe = AVIStreamEnd( m_avistream );

TRACE("stream end: %d\n", m_endframe );

r=AVIStreamInfo( m_avistream, &m_streaminfo, sizeof(m_streaminfo) );

TRACE("AVIStreamInfo: %s\n", r==0 ? "OK" : "failed" );

m_buflen = m_dstfmt->biSizeImage;

int finalbuflen=((m_dstfmt->biWidth+3) & ~3) * m_dstfmt->biHeight;

if (m_streaminfo.dwSuggestedBufferSize)

if ((LONG)m_streaminfo.dwSuggestedBufferSize < m_buflen)

{

TRACE("adjusting m_buflen to suggested size\n");

m_buflen = (LONG)m_streaminfo.dwSuggestedBufferSize;

}

if (m_decomp)

ICClose( m_decomp );

m_decomp = ICDecompressOpen( ICTYPE_VIDEO, m_streaminfo.fccHandler, m_srcfmt, m_dstfmt );

TRACE("ICDecompressOpen: %s\n", m_decomp ? "OK" : "failed");

if (m_rawdata)

{

TRACE("delete [] m_rawdata...\n");

delete [] m_rawdata;

}

m_rawdata = new BYTE[m_buflen];

if (m_finaldata)

{

TRACE("delete [] m_finaldata...\n");

delete [] m_finaldata;

}

m_finaldata = new BYTE[finalbuflen];

gapgf = AVIStreamGetFrameOpen(m_avistream, NULL);

//getframe

LPSTR lpbi = NULL;

if(m_endframe == m_curframe)

m_curframe--;

lpbi = (LPSTR)AVIStreamGetFrame(gapgf, m_curframe);

HBITMAP hbitmap = CreateBitmap((BYTE*)AVI_FindDIBBits(lpbi),(LPBITMAPINFOHEADER)lpbi);

CxImage ima;

ima.CreateFromHBITMAP(hbitmap);

CString filename;

filename.Format("%s_%d.bmp",m_genericfile,m_curframe);//ici le nom du fichier et cur_frame le numéro de l'image

ima.Save(filename, CXIMAGE_FORMAT_BMP);

//création

if (m_avistream)

AVIStreamRelease( m_avistream ), m_avistream = NULL;

if (m_decomp)

ICClose( m_decomp ), m_decomp=NULL;

if (m_srcfmt)

delete [] m_srcfmt, m_srcfmt=NULL;

if (m_dstfmt)

delete [] m_dstfmt, m_dstfmt=NULL;

if (m_rawdata)

{

TRACE("delete [] m_rawdata...\n");

delete [] m_rawdata, m_rawdata=NULL;

}

if (m_finaldata)

{

TRACE("delete [] m_finaldata..\n");

delete [] m_finaldata, m_finaldata=NULL;;

}

if (gapgf)

{

AVIStreamGetFrameClose(gapgf);

gapgf = NULL;

}

AVIFileExit();

celà doit être ta fonction

louis14
jeudi 20 avril 2006 à 09:05:32 | Re : Extraction des images d'une vidéo

elo29

Merci pour la réponse, je regarde ça!!!


Cette discussion est classée dans : images, vidéo, capture, extraction, camera


Répondre à ce message

Sujets en rapport avec ce message

Extraction des images d'un fichier vidéo ? [ par elflink ] Bonjour à tous,   <P class=MsoNormal style="MARGIN extraction d'images d'un flux video [ par neoX13 ] Je cherche à extraire des images d'un flux vidéo provenant d'une carte d'acquisition, ce que je n'ai jamais réalisé. Je programme en C++ et je ne conn Capture vidéo avec DirectShow [ par lectpe ] Bonjour à tous :J'aimerai pouvoir capturer non pas une vidéo mais une succession d'image provenant d'une webcam grâce à DirectShow mais j'ai cherché s détection de mouvement [ par b_electronique ] bonjour tt le monde  <p class="MsoNormal" style="MARGIN: 0cm OpenCV et camera IP [ par Nolife11 ] Salut Voila j'ai un projet de fin d'étude sur les camera IP avec OpenCV ,d'abord je doit faire l'acquisition d'une vidéo a partir de ma camera IP (F [Qt] Capture vidéo [ par christophedlr ] Bonjour à tous, J'aurais besoin de développer un logiciel pouvant capturer le bureau et les jeux vidéos (comme camstudio et fraps). Le problème est traitement et prédiction de vidéo [ par celinebac ] Si on a à pointer sur une vidéo puis detecter l'ensemble de ses images, ensuite prendre chaque image à part et la traiter pixel par pixel et classer c Capture d'écran d'une vidéo [ par lol55 ] Bonsoir à Tous,Je parviens très bien à faire une capture d'écran avec ce code :http://monsitecpp.free.fr/capture.cppMais lorsque j'essaye de capturer capture de flux d une camera IP et detecttion d intrusion physique en c++ [ par mannatheking ] voilà j ai un projet de fin d'etude qui s intitule capture de flux video d une camera IP et detection d intusion en C++ sur windows.pour le moment je


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 4,649 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales