begin process at 2012 05 30 02:39:05
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

2 jours que je bloque sur LPVIDEOHDR


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

2 jours que je bloque sur LPVIDEOHDR

dimanche 16 avril 2006 à 12:02:08 | 2 jours que je bloque sur LPVIDEOHDR

jmhC

Membre Club
Bonjour à tous,

Celà fait deux jours que j'essaye de faire fonctionner :

void CWebCam::ChargeTable(int ID_Bmp, LPVIDEOHDR lpVHdr)
{
    // Déclaration des variables
    int i, j;        // Bcl
    BYTE R, G, B;    // Recupère des infos
...
...
    BYTE* pData = (BYTE*)lpVHdr->lpData;
    for(i=0; i<nHeight; i++)
        for(j=0; j<nWidth; j++)
        {
            // Récupère chaque coef du RGB
            TblImage[ID_Bmp].points[i][j].R            = R = pData[2];
            TblImage[ID_Bmp].points[i][j].G            = G = pData[1];
            TblImage[ID_Bmp].points[i][j].B            = B = pData[0];
           
            // Calcul la couleur
            TblImage[ID_Bmp].points[i][j].Couleur    = R + 256*G + 256*256*B;

            // Prochain pixel
            pData = pData+3;
        }
    return;
}

Celà me faire une exeception car je dépasse la limité de pData.
Je m'explique :
Taille lpVHdr => 115200 octets
Taille de l'image 320*240 soit normalement 320*240*3(pixels)= 230400 octets
Donc je ne peux pas lire les 230400 octets dans pData qui lui n'en fait que 115200 octets !

La question que je me pose : Comment est organisé "lpVHdr->lpData" pour réaliser l'extraction des pixels RVB ?

Merci pour votre aide!!!

jmh
dimanche 16 avril 2006 à 12:54:59 | Re : 2 jours que je bloque sur LPVIDEOHDR

vecchio56

Administrateur CodeS-SourceS
Ce qui est bizarre c'est que du coup ca nous fait du 1,5 octet par pixel... J'ai vu d'autres exemples ou ils faisaient comme tu fais Tu peux essayer de mettre ton image dans un HDC avec StretchDIBits, et après récupérer les pixels avec GetPixel. Par contre ce sera clairement plus long
dimanche 16 avril 2006 à 13:24:38 | Re : 2 jours que je bloque sur LPVIDEOHDR

jmhC

Membre Club

Justement c'est ce que je veux éviter, car je retravaille l'image avant de l'afficher. Donc j'utilise la macro "OnFrame"
pour transférer l'image dans un tableau de point-pixel.
La méthode que j'utilise est une méthode courante, mais il y a un probléme avec le format des pixels.
Et pourquoi celà marche chez les autres et pas chez moi ?
jmh
dimanche 16 avril 2006 à 13:28:26 | Re : 2 jours que je bloque sur LPVIDEOHDR

vecchio56

Administrateur CodeS-SourceS
Travailler avec un HDC ne veut pas dire l'afficher Tu crée un dc mémoire (CreateCompatibleDC, CreateCompatibleBitmap) et ton image ne sera pas à l'écran. Au moment de l'afficher, tu fais ensuite un BitBlt du DC mémoire vers le DC écran.
dimanche 16 avril 2006 à 13:32:11 | Re : 2 jours que je bloque sur LPVIDEOHDR

jmhC

Membre Club
Oui, c'est vrai, mais c'est du temps de traitement comme tu l'a dit, j'ai essayé cette méthode avant de passer par le callback. De plus tu ne peux pas synchroniser ton post-traitement car tu ne maitrises pas le moment ou l'image sera affichée dans DC.

jmh
dimanche 16 avril 2006 à 13:47:24 | Re : 2 jours que je bloque sur LPVIDEOHDR

vecchio56

Administrateur CodeS-SourceS
Pourquoi je ne maitrise pas le moment ou l'image sera affichée?
dimanche 16 avril 2006 à 13:57:37 | Re : 2 jours que je bloque sur LPVIDEOHDR

jmhC

Membre Club
parce qu'aprés avoir fait la séquence suivante :

    // Rafraichissement
    capPreviewRate(hWnd_WC, 15) ;

    // Affiche
    capPreview(hWnd_WC, TRUE) ;

l'affichage se fait de maniére automatique. C'est le progrés.

A moins que tu connaisses une astuce !

Je tiens à te remercier pour ta disponibilité.

jmh
dimanche 16 avril 2006 à 14:00:02 | Re : 2 jours que je bloque sur LPVIDEOHDR

vecchio56

Administrateur CodeS-SourceS
Non je ne connais pas d'astuce... Mais toi aussi tu fais un traitement (même sans passer par un DC mémoire), donc tu ne maitrise rien de plus qu'avec un DC mémoire...
dimanche 16 avril 2006 à 14:06:55 | Re : 2 jours que je bloque sur LPVIDEOHDR

jmhC

Membre Club
En fait, le callback te permet de récupérer les datas vidéo à chaque frame, et permet donc de faire le prétraitement à chaque frame, des calculs, ...

jmh
dimanche 16 avril 2006 à 14:08:59 | Re : 2 jours que je bloque sur LPVIDEOHDR

vecchio56

Administrateur CodeS-SourceS
Oui mais qu'est ce qui te fais dire qu'avec un dc mémoire ca ne va pas marcher? Si le temps de traitement n'est pas trop long tu n'aura pas de problème

1 2

Cette discussion est classée dans : id, bmp, pdata, lpvhdr, tblimage


Répondre à ce message

Sujets en rapport avec ce message

problème de chargement de bitmap [ par Batman60 ] bonjour y a pas moyen de charger des bitmaps avec  la fonction :gluBuild2DMipmaps(GL_TEXTURE_2D, 3, BMP.bmWidth, BMP.bmHeight,    GL_RGB, GL_UNSIGNED_ Detection de movement grâce à la webcam [ par windowsfashion ] Bonjour J'ai récuperé une excellente source ici mais je n'arrive pas à utliser la fonction de detection de mouvement... La fonction: void CWebCam::C Modification fichier BMP [ par goueg83460 ] Bonjour, je suis  en train de programmer avec builder, et je cherche à redimensionner une image BMP a l'aide du composant TImage. Lors d'une modificat Comment afficher une image bmp dans un picture depuis un buffer image [ par firens ] Bonjour,j'utilise un framegrabber pour récupérer une image.Je désirerais pouvoir utiliser mon buffer image pour l'afficher dans un picture de type Bit wxXmlResource pour creer un menu de signets ftp ??? [ par satellite34 ] bonjour, je développe une application client ftp, je voudrai y implémenter un menu de signets ftp;pour le moment j'ecris mes id's de connection dans u Image de fond sous API en Visual C++ [ par lolo177 ] Salut.j'ai développé une application sous visual C++ mais je n'arrive pas à afficher une image en fond d'écran.Ma fonction est : void CMainFrame::Imag Résolution d'image [ par DavDav02 ] Salut à tous,Je suis en BTS et je dois réaliser un projet de capture + traitement d'image.Je rencontre un petit problème et j'aurais besoin d'aide.Je inserer une image . bmp [ par kikaanouar ] je vx savoir est ce que c 'est possible d inserer une image .bmp dans un programme fait en langage c avec le mode graph si c possible est ce que vous afficher data BMP dans HWND [ par supergrey ] Bonjour, dans mon programme j'ai récupérer les données d'une bitmap dans un tableau de char, j'ai modifier certaine valeur (edition bitmap) je voudrai OpenGL Transparence BMP Image images [ par maladedede ] Bonjour je fais un jeu avec openGLet je voudrais savoir comment fair pour que certainnne partie d'une image bmp soit transparente.Merci MaLaDeDeDe


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 : 1,513 sec (4)

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