begin process at 2012 05 27 21:03:48
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Graphique

 > TRAITEMENT DES VIDÉOS AVI: IMANALYSE

TRAITEMENT DES VIDÉOS AVI: IMANALYSE


 Information sur la source

Note :
8 / 10 - par 1 personne
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Graphique Classé sous :ImAnalyse, Video, traitement, AVI, win32 Niveau :Débutant Date de création :30/10/2008 Vu / téléchargé :5 865 / 864

Auteur : Pistol_Pete

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (15)
Ajouter un commentaire et/ou une note


 Description

Cliquez pour voir la capture en taille normale
Ce programme permet de lire des vidéos au format AVI et d'appliquer des filtres et d'autres outils du traitement de l'image sur des vidéos.
Le principe est simple, on lit la vidéo image par image et pour chaque image, on applique le traitement voulu.

ImAnalyse est un logiciel complet en traitement de l'image. On peut donc appliquer sur les vidéos toutes les fonctionnalités implémentées dans ce logiciel.
(Détection de contours, seuillage, flood fill, filtres, morphologie mathématique...

Les applications peuvent être très nombreuses: Effet visuel, détection des mouvements, ajout d'un texte sur l'image...

Toute la documentation sur ce logiciel se trouve sur mon site internet:

http://ImAnalyse.free.fr


 Conclusion

La vidéo test étant trop grosse pour la mettre dans le zip, vous pouvez télécharger le package complet à cette adresse:
http://imanalyse.free.fr/?page=Telechargement/Tel echargement

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture VISUALISATION DES IMAGES EN 3D SANS OPENGL
Source avec Zip Source avec une capture ANALYSE DE LA TEXTURE D'UNE IMAGE : FILTRE DE GABOR
Source avec Zip Source avec une capture VIEWER COMPLET POUR LE TRAITEMENT DE L'IMAGE : IMANALYSE
Source avec Zip Source avec une capture ALGORITHMES D'OPTIMISATION NON LINÉAIRE: DESCENTE DE GRADIEN...
Source avec Zip Source avec une capture CLASSE GRAPH: GESTION DES GRAPHIQUES DANS LES APPLICATIONS W...

 Sources de la même categorie

Source avec Zip Source avec une capture PLANNING D'EQUIPE par grephit
Source avec Zip APPLICATION DE DESSIN DE QUELQUES FIGURES par laguchori
Source avec Zip Source avec une capture HDR EXPOSURE FUSION par mecrosoft
Source avec Zip Source avec une capture IRC CLIENT MULTISERVEUR EN MFC (TXIRC) par TeniX
Source avec Zip ENTETE DU FICHIER BMP (BIPMAP) par k.Lutchi

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture EVAL EXPRESSION COMPLEXE EN 15 LIGNES DE CODE par yann_lo_san
Source avec Zip Source avec une capture IMANALYSE : LOGICIEL DE TRAITEMENT DE L'IMAGE + DITHERING [W... par Pistol_Pete
Source avec Zip Source avec une capture DVD2AVI2 ---- ENCODAGE FICHIERS : VOB VERS AVI par JanMark
Source avec Zip Source avec une capture LOGICIEL COMPLET EN TRAITEMENT DE L'IMAGE (WIN 32) par Pistol_Pete
Source avec Zip CAPTURE D'IMAGES BITMAP À PARTIR D'UNE SÉQUENCE AVI par salem3

Commentaires et avis

Commentaire de soso62fr le 05/11/2008 01:12:42

Pas malle (j'ai pas encort regarder la source)

Commentaire de soso62fr le 05/11/2008 01:14:04

Je regarde les source et je te dit mon vrai avis

Commentaire de soso62fr le 05/11/2008 01:23:32 8/10

aprés l'avoir utilisé je vois qu'il ne modifie pas les videos... J'ai tort ?

Commentaire de Pistol_Pete le 05/11/2008 18:36:45

Salut
En effet la sauvegarde de la vidéo après traitement n'est pas encore implémenté. Je me pose encore quelques questions au niveau de l'interface graphique, à savoir si je sauvegarde la vidéo en même temps que l'utilisateur la regarde ou si je fais une fonction qui le fais directement (sans timer).


A+

Commentaire de soso62fr le 07/11/2008 02:54:05

Correction :
Ah daccord ! Ben sinon en general c'est un bon prog suffit juste de le finire -_-'

Ma note : 17/20

A+ ;)

Commentaire de mr_log le 13/11/2008 07:25:45

pouvez vous m'aider a ce program, il est dans le meme sujet:

please how to change this program for read all size for AVI file?
Ce programme permet d'aficher un fichier AVI bien précis width= 48 and lenght=80, so the size is 48x80x3= 117Ko alors si en change la taille du video il ne peut pas marché,

il affiche dans un 1er temps une image bmp inversé, au dessous de cette image il affiche 5 frames, et au dessous il affiche le video, mais just pour cette taille,
alors comment faire si je veux changer le program pour lire tout les tailles des fichiers AVI?
si quelqu'un peut m'aider je vous remercie vivement.



// Get pointers to the info structure & the bits
   pointer = (BYTE *) prifffile ;    the pointer here is static I think we must change into dynamic for read all size
              
       //sstring[0] = * (pointer+4095);
             pointer = pointer + 4096+11; // here we can change the color of bitmap background
  
  
   hdc = BeginPaint (hwnd, &ps) ;

           //draw a frame
  
               for(i=0;i<48;i++)
        for(j=0;j<80;j++)
if((0.299*(*(pointer+2+i*80*3+j*3))+0.587*(*(pointer+1+i*80*3+j*3))+0.114*(*(pointer  +i*80*3+j*3)))<100)
        SetPixel(hdc,j+50,i+50,RGB(255,0,0));
              



  //draw 5 frames parally

   for(m=0;m<5;m++){// this is a movie
          for(i=0;i<48;i++)
               for(j=0;j<80;j++)
               SetPixel(hdc,j+100*m+50,i+150,RGB(*(pointer+2 + j*3 +(48-i)*80*3),
                                      *(pointer+1 + j*3 +(48-i)*80*3),
                  *(pointer   + j*3 +(48-i)*80*3)));



                        pointer = pointer + 11520*m+8*m;
                         
   }



    
               pointer = (BYTE *) prifffile ; //let the pointer to pointer the begining again
                                  
   pointer = pointer + 4096+11;    //let the pointer to point at the bitmap data
                                

        

              //draw several frames to make a animation as movie
  
  
   for(n=0;n<5;n++){  // repeat 5 times
       for(m=0;m<5;m++){// this is a movie
           for(i=0;i<48;i++)
                for(j=0;j<80;j++)
                SetPixel(hdc,j+50,i+250,RGB(*(pointer+2 + j*3 +(48-i)*80*3),
                                 *(pointer+1 + j*3 +(48-i)*80*3),
             *(pointer   + j*3 +(48-i)*80*3)));
                         pointer = pointer + 11520*m+8*m;
     Sleep(300); // set a time interval to make the movie natural
                    
}
   pointer = (BYTE *) prifffile ; //let the pointer to pointer the begining again
                                  
   pointer = pointer + 4096+11;    //let the pointer to point at the bitmap data
                                  
   } // repeat 10 times
                
  
   EndPaint (hwnd, &ps) ;  

   // show a dialogbox to tell you that the testing ends
       MessageBox(hwnd,TEXT("displaying ends/ÑÝʾ½áÊø"),sstring,0);

   return 0 ;


================================================================================================================================================


                                   ||Program||                      
                                     -------
/*----------------------------------------------
   SHOWDIB1.C -- Shows a DIB in the client area
                 (c) Charles Petzold, 1998
  ----------------------------------------------*/

#include <windows.h>
#include <aviriff.h>
#include <iostream.h>
#include "dibfile.h"
#include "resource.h"

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;

TCHAR szAppName[] = TEXT ("ShowDib1") ;



int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    PSTR szCmdLine, int iCmdShow)
{
     HACCEL   hAccel ;
     HWND     hwnd ;
     MSG      msg ;
     WNDCLASS wndclass ;

     wndclass.style         = CS_HREDRAW | CS_VREDRAW ;
     wndclass.lpfnWndProc   = WndProc ;
     wndclass.cbClsExtra    = 0 ;
     wndclass.cbWndExtra    = 0 ;
     wndclass.hInstance     = hInstance ;
     wndclass.hIcon         = LoadIcon (NULL, IDI_APPLICATION) ;
     wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW) ;
     wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
     wndclass.lpszMenuName  = szAppName ;
     wndclass.lpszClassName = szAppName ;

     if (!RegisterClass (&wndclass))
     {
          MessageBox (NULL, TEXT ("This program requires Windows NT!"),
                      szAppName, MB_ICONERROR) ;
          return 0 ;
     }

     hwnd = CreateWindow (szAppName, TEXT ("display an avi picture and an avi movie"),
                          WS_OVERLAPPEDWINDOW,
                          CW_USEDEFAULT, CW_USEDEFAULT,
                          CW_USEDEFAULT, CW_USEDEFAULT,
                          NULL, NULL, hInstance, NULL) ;

     ShowWindow (hwnd, iCmdShow) ;
     UpdateWindow (hwnd) ;

     hAccel = LoadAccelerators (hInstance, szAppName) ;

     while (GetMessage (&msg, NULL, 0, 0))
     {
          if (!TranslateAccelerator (hwnd, hAccel, &msg))
          {
               TranslateMessage (&msg) ;
               DispatchMessage (&msg) ;
          }
     }
     return msg.wParam ;
}

LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
     ////////////////////////////////////
static BITMAPINFO       * pbmi  ;
     static BYTE             * pBits ;
     ////////////////////////////////////
     static RIFFLIST         * prifffile ;
     static AVIMAINHEADER    * pavimh;
     static AVISTREAMHEADER  * pavish ;
static BYTE             * pointer ;
/////////////////////////////////////////////////////////////////////
     static int                cxClient, cyClient, cxDib, cyDib ;
     static TCHAR              szFileName [MAX_PATH], szTitleName [MAX_PATH] ;
     BOOL                      bSuccess ;
     HDC                       hdc ;
     PAINTSTRUCT               ps ;
     int i,j,m,n;


     //////////////////////////////////////////////////////////////////////
// RIFF is the first 4 letters of a riff file. avi file is a riff file
static TCHAR sstring[] = {'R','I','F','F','\0'};
//////////////////////////////////////////////////////////////////////

     switch (message)
     {
     case WM_CREATE:
          DibFileInitialize (hwnd) ;
          return 0 ;

     case WM_SIZE:
          cxClient = LOWORD (lParam) ;
          cyClient = HIWORD (lParam) ;
          return 0 ;

     case WM_INITMENUPOPUP:
          EnableMenuItem ((HMENU) wParam, IDM_FILE_SAVE,  
                          prifffile ? MF_ENABLED : MF_GRAYED) ;
          return 0 ;

     case WM_COMMAND:
          switch (LOWORD (wParam))
          {
          case IDM_FILE_OPEN:
                    // Show the File Open dialog box
  

               if (!DibFileOpenDlg (hwnd, szFileName, szTitleName))
                    return 0 ;
              
                    // If there's an existing DIB, free the memory

   MessageBox(hwnd,szFileName,TEXT("The name of the file you have opened is"),0);
                
               if (prifffile)
               {
                    free (prifffile) ;
    prifffile = NULL ;
               }
                    // Load the entire DIB into memory

               SetCursor (LoadCursor (NULL, IDC_WAIT)) ;
               ShowCursor (TRUE) ;

               prifffile =  DibLoadImage(szFileName) ;
            
              
               ShowCursor (FALSE) ;
               SetCursor (LoadCursor (NULL, IDC_ARROW)) ;

                    // Invalidate the client area for later update

               InvalidateRect (hwnd, NULL, TRUE) ;

               if (prifffile == NULL)
               {
                    MessageBox (hwnd, TEXT ("Cannot load AVI file"),
                                szAppName, 0) ;
                    return 0 ;
               }

       /* ------------------------------------------------------------------------------ */      
  







               // Get pointers to the info structure & the bits
   pointer = (BYTE *) prifffile ;
              
       //sstring[0] = * (pointer+4095);
             pointer = pointer + 4096; // here we can change the color of bitmap background
  
  
   hdc = BeginPaint (hwnd, &ps) ;
   //draw a frame
   //»­Ò»Ö¡
               for(i=0;i<48;i++)
        for(j=0;j<80;j++)
if((0.299*(*(pointer+2+i*80*3+j*3))+0.587*(*(pointer+1+i*80*3+j*3))+0.114*(*(pointer  +i*80*3+j*3)))<100)
        SetPixel(hdc,j+50,i+50,RGB(255,0,0));
              


   //draw 5 frames parally
   for(m=0;m<5;m++){// this is a movie
          for(i=0;i<48;i++) //»­Ò»Ö¡
               for(j=0;j<80;j++)
               SetPixel(hdc,j+100*m+50,i+150,RGB(*(pointer+2 + j*3 +(48-i)*80*3),
                                      *(pointer+1 + j*3 +(48-i)*80*3),
                  *(pointer   + j*3 +(48-i)*80*3)));
                        pointer = pointer + 11520*m+8*m;
                         
   }

    
               pointer = (BYTE *) prifffile ; //let the pointer to pointer the begining again
                                  
   pointer = pointer + 4096+11;    //let the pointer to point at the bitmap data
                                

   //draw several frames to make a animation as movie
  
  
   for(n=0;n<5;n++){  // repeat 10 times
       for(m=0;m<5;m++){// this is a movie
           for(i=0;i<48;i++)
                for(j=0;j<80;j++)
                SetPixel(hdc,j+50,i+250,RGB(*(pointer+2 + j*3 +(48-i)*80*3),
                                 *(pointer+1 + j*3 +(48-i)*80*3),
             *(pointer   + j*3 +(48-i)*80*3)));
                         pointer = pointer + 11520*m+8*m;
     Sleep(300); // set a time interval to make the movie natural
                    
}
   pointer = (BYTE *) prifffile ; //let the pointer to pointer the begining again
                                  
   pointer = pointer + 4096+11;    //let the pointer to point at the bitmap data
                                  
   } // repeat 10 times
                
  
   EndPaint (hwnd, &ps) ;  

   // show a dialogbox to tell you that the testing ends
       MessageBox(hwnd,TEXT("displaying ends/ÑÝʾ½áÊø"),sstring,0);

   return 0 ;


          case IDM_FILE_SAVE:
                    // Show the File Save dialog box

               if (!DibFileSaveDlg (hwnd, szFileName, szTitleName))
                    return 0 ;
              
                    // Save the DIB to memory

               SetCursor (LoadCursor (NULL, IDC_WAIT)) ;
               ShowCursor (TRUE) ;

               bSuccess = DibSaveImage (szFileName, prifffile) ;

               ShowCursor (FALSE) ;
               SetCursor (LoadCursor (NULL, IDC_ARROW)) ;

               if (!bSuccess)
                    MessageBox (hwnd, TEXT ("Cannot save AVI file"),
                                szAppName, 0) ;
               return 0 ;
          }
          break ;

     case WM_PAINT:
          hdc = BeginPaint (hwnd, &ps) ;
      /*if (pbmi)
                                  SetDIBitsToDevice (hdc,
                                  50,         // xDst
                                  100,         // yDst
                                  cxDib,     // cxSrc
                                  cyDib,     // cySrc
                                  0,         // xSrc
                                  0,         // ySrc
                                  0,         // first scan line
                                  cyDib,     // number of scan lines
                                  pBits,
                                  pbmi,
                                  DIB_RGB_COLORS) ; */
      EndPaint (hwnd, &ps) ;
          return 0 ;
          
     case WM_DESTROY:
  
  /*if (pointer)
              free (pointer);
  if (prifffile)
              free (prifffile);
          if (pavish)
               free (pavish);
          if (pbmi)
              free (pbmi) ;
          if (pavimh)
               free (pavimh) ;
  if(pBits)
   free (pBits);  
          */
          PostQuitMessage (0) ;
          return 0 ;
     }
     return DefWindowProc (hwnd, message, wParam, lParam) ;
}

Commentaire de soso62fr le 13/11/2008 12:28:20

Faudrais que tu recupere la taille de la video et que tu les stoque dans des variables exemple "int height, width" est ensuite il te suffit juste d'un peut d'intelegence et faire ça par exemple :
              for(i=0;i<width;i++)
        for(j=0;j<height;j++)

A la place de ça :
              for(i=0;i<48;i++)
        for(j=0;j<80;j++)

Et bien sur y'a des autres truc a changer a part ça mais a mon avis il te suffit de remplacer 80 par height et 48 par width donc ton code

++

Commentaire de Pistol_Pete le 13/11/2008 20:00:52

Salut
Effectivement comme dit soso62fr, il faut tenir en mémoire les dimensions de l'image.
Autre chose, évite d'utiliser la fonction SetPixel c'est très lent. Utilise plutôt la
fonction Bitblt.

A+

Commentaire de mr_log le 14/11/2008 04:01:16

Merci de votre aide je travail sur ca, pouvez vous me dire a propos de ce pointeur, "pointer" parce que on ajoute la valeur 4095 qui indique au pointeur de commencer par ce point, et cette information tirer du video par debug.exe,
alors qu'est ce que vous pencez?
je crois pour le generaliser je dois l'eviter aussi

//sstring[0] = * (pointer+4095);
             pointer = pointer + 4096+11; // here we can change the color of bitmap background

pointer = pointer + 4096+11;    //let the pointer to point at the bitmap data


Merci

Commentaire de mr_log le 14/11/2008 04:05:45

aussi pour la declaration statique de ces 2 pointeurs:

static RIFFLIST         * prifffile ;
static BYTE             * pointer ;

est ce qu'ils ont un effet sur le program,

Commentaire de Pistol_Pete le 14/11/2008 16:04:55

Très sincèrement, regarde comment je lit les fichiers AVI, je pense que se sera bien plus facile
et fiable que la manière dont tu le fais.
Sinon il faut se plonger dans les spec des fichier avi. Perso, je pense que 4096 doit etre la taille de l'entete.

Les variables static sont ici obligatoire.
A+

Commentaire de mr_log le 14/11/2008 18:11:58

effectivement la valeur 4096 est la taille de header, on ajoute cette valeur, pour dire au pointeur de commencer par cette adresse.
j'ai un autre programme qui lit les fichier facilement pour tt les tailles, et facile. pour celui la il est imposer, alors je dois le modifier, je n'ai pas le choix.

merci de votre aide

Commentaire de soso62fr le 14/11/2008 18:26:26

ben non static veut dire creer une seul fois donc je voi pas le probleme

Commentaire de ALICE009 le 21/05/2009 23:13:03

salut PISTOL_PETE,
j'ai voulu compiler votre programme et j'ai eu l'erreur suivante :
1>error C2065: 'IDC_HAND' : undeclared identifier
est ce que tu peux m'aider a corrigé cette faute ?

Commentaire de Pistol_Pete le 22/05/2009 09:54:59

Salut Alice

IDC_HAND est un cursor. S'il ne te le prend pas, essaye un autre cursor. Regarde ici:
http://msdn.microsoft.com/en-us/library/ms648391(VS.85).aspx

Je suis cependant assez surpris, IDC_HAND fonctionne pour moi sous XP et Vista...
A+

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Traitement des messages (win32) [ par Dorgendubal ] Bonjour,j'ai un petit probleme de traitement des messages sous win32 (sans MFC !). Quand je crée un nouvel objet (bouton, edit,...) avec CreateWindow( [Win32] changer le mode video [ par djl ] voila, j'e cree une fenetre d'une certaine resolution (en plein ecran ou non) et je voudrait savoir comment changer le mode video(en fait soit la tail Convertir une heure au format LPCOLESTR [ par bigzooloo ] Bonjour,je travaille sur un programme de video surveillance avec DirectShow. Et je bloque sur un problème de date !J'aimerais récupérer l'heure couran traitement compression d'image et de video sur c++ [ par sango_1979 ] Bonjour &#224; tous;Je suis nouveau sur ce site et j'aimerais trouver des codes ou bien kelkun avec ki collaborer sur le traitement de l'image et la v Séparer le HEADER d'un AVI et la video ? ? ? [ par supergrey ] Salut, je voudrais savoir comment s&#233;parer un avi pour avoir d'un cot&#233; l'entete et de l'autre les donn&#233;es video.Le but est de pouvoir ap convertir un .AVI en .BMP [ par shinji09 ] Salut, je cherche une fonction qui pourrais me permettre de transformer une video en .bmp.J'explique dans quel contexte, j'ai capturé une video a l'ai format avi [ par ZaRMaS ] Salut a tous, Dans le cadre d un projet developpe en C je voudrai lire le header d un fichier avi. j esperai pouvoir faire comme pour lire un fichier Capture video DV vers AVI [ par francois33 ] Bonjour Je cherche a faire la capture d'une video provenant d'une camera DV et a l'enregistrer sous forme de fichier AVI OpenCV IPL AVI Nombre de trames : ( [ par kididouille ] Bonjour à tous j'espere que quelqu'un pourra m'aider, voici ma requete: Je cherche à connaitre le nombre d'image qui composent un fichier AVI Pour lir chargement d'une sequence video avec visual c++ et OpenCV [ par khawla_ing ] j'ai le bout du code suivant qui normalement charge une sequence video et l'affiche dans une fenetre que j'ai deja crée mais il n'est apparu qu'une fe


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

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 : 0,562 sec (3)

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