begin process at 2012 05 30 06:17:32
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

Multimédia

 > 

Récupérer un bitmap...


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

Récupérer un bitmap...

vendredi 30 novembre 2007 à 18:45:21 | Récupérer un bitmap...

Crepuscule3

Bonjour à tous,

   je suis actuellement sur un projet de traitement vidéo. Ce projet avance plutôt mais je reste coincé sur l'acquisition des pixels.
Je viens tout juste de passer une étape. J'ai utilisé une fonction (GetCurrentImage(long the format, VARIANT* Buffer, long* theBufferSize)) qui normalement me permet d'aller chercher une image BMP dans le flux MJPEG de la vidéo. Cette image est normalement stocké dans Buffer.
 Donc voilà, j'ai ma variable Buffer de type VARIANT et la longueur de l'image theBufferSize de type long, mais je ne sais pas comment obtenir à partir de cela, mon image sous la forme d'un tableau à deux dimensions (correspondant aux pixels sur x et y, résolution 640x480).

Quelqu'un aurait-il une suggestion? (ou un exemple de code, ce serait plus facile pour comprendre)

Voici la définition de la structure VARIANT:
-------------------------------------------------------------------------------------------

struct

tagVARIANT
{
union
{
struct __tagVARIANT
{
VARTYPE vt;
WORD wReserved1;
WORD wReserved2;
WORD wReserved3;
union
{
LONGLONG llVal;
LONG lVal;
BYTE bVal;
SHORT iVal;
FLOAT fltVal;
DOUBLE dblVal;
VARIANT_BOOL boolVal;
_VARIANT_BOOL bool;
SCODE scode;
CY cyVal;
DATE date;
BSTR bstrVal;
IUnknown *punkVal;
IDispatch *pdispVal;
SAFEARRAY *parray;
BYTE *pbVal;
SHORT *piVal;
LONG *plVal;
LONGLONG *pllVal;
FLOAT *pfltVal;
DOUBLE *pdblVal;
VARIANT_BOOL *pboolVal;
_VARIANT_BOOL *pbool;
SCODE *pscode;
CY *pcyVal;DATE *pdate;
BSTR *pbstrVal;
IUnknown **ppunkVal;
IDispatch **ppdispVal;
SAFEARRAY **pparray;
VARIANT *pvarVal;
PVOID byref;
CHAR cVal;
USHORT uiVal;
ULONG ulVal;
ULONGLONG ullVal;
INT intVal;
UINT uintVal;
DECIMAL *pdecVal;
CHAR *pcVal;
USHORT *puiVal;
ULONG *pulVal;
ULONGLONG *pullVal;
INT *pintVal;
UINT *puintVal;
struct __tagBRECORD
{
PVOID pvRecord;
IRecordInfo *pRecInfo;
} __VARIANT_NAME_4;
} __VARIANT_NAME_3;
} __VARIANT_NAME_2;
DECIMAL decVal;
} __VARIANT_NAME_1;
} ;
typedef VARIANT *LPVARIANT;
typedef VARIANT VARIANTARG;
typedef VARIANT *LPVARIANTARG;
vendredi 30 novembre 2007 à 22:40:02 | Re : Récupérer un bitmap...

rt15

Membre Club Administrateur CodeS-SourceS
Salut,

Marrant, j'ai comme une sensasion de déjà vu...

Bah tu es sur la bonne piste on dirait. Les variant sont conçus pour contenir à peu près n'importe quoi. D'après le code VB que j'avais posté, on peut supposer que ton variant contient un tableau de Byte. Tu peux le vérifier en faisant des tests sur le champ vt de ton variant.

Genre if (Buffer->vt & VT_ARRAY) alors c'est un tableau.

Quand un variant contient un tableau, il est pointé par parray. Mais l'aide précise qu'il ne faut pas accèder à ce pointeur directement, mais plutôt utiliser les fonctions faîtes pour.

Dans ton cas tu peux par exemple utiliser SafeArrayAccessData pour récupérer un pointeur sur les données de ton tableau. Puis tu peux par exemple utiliser CxImage comme je te le proposais pour avoir une image sur laquelle tu peux travailler. Et ensuite seulement tu pourras utiliser SafeArrayUnaccessData.


3ème année en ecole d'ingé d'info cherche stage de 4 mois à partir du 01/04/08
samedi 1 décembre 2007 à 20:06:49 | Re : Récupérer un bitmap...

Crepuscule3

Merci pour le coup de main.

   Je n'ai pas eu le temps de me mettre sur ce projet aujourd'hui (beaucoup de boulot en ce moment à la fac), mais j'ai suivit ta piste et il semble que se soit la bonne piste, vu ce que j'ai trouvé comme infos sur la fonction SafeArrayAccessData. Je n'arrive encore pas à la mettre en oeuvre, j'ai quelques problèmes de pointeurs. Par ailleurs, je ne suis pas sûr de mettre en oeuvre les bonnes variables, bien que j'en sois quasiment sûr.

   Je pense que je me mettrais plus sérieusement là dessus demain. Merci encore pour les pistes.
En revanche, si tu as d'autres pistes ou conseils, je suis preneur.

Crepuscule3


Cette discussion est classée dans : long, image, name, bool, variant


Répondre à ce message

Sujets en rapport avec ce message

intégrer une page web dans un dialog box [ par magic_Nono ] le but du jeux est d'afficher une page web dans une zone de dialog box je pensais pour cela intégrer un controle activeX gérant le html néanmoins, j Créer un VARIANT contenant un tableau de long [ par jayjay9531 ] Bonjour,Je viens vers vous parce que je croise assez si=ouvent ces VARIANT ou _variant_t que je n'arrive pas à bien utiliser. Grâce à MSDN et au forum Génération image 3D depuis un bool[3k][4k][50k] [ par HSylvio ] Bonjour,   Je travaille en ce moment sur la visualisation 3D à partir de statistiques;mon problème c'est que mon objet sera un ensemble de points; ass [HELP]DirectShow : SampleGrabber + libjpeg [ par shyne99 ] Bonjour, Voila je modifie le programme Playcap fourni dans la SDK de DirectShow. Ce programme creer un graph afin de recuperer le flux video de la c segmentationd'image par chaine de markov Couple et Triplet [ par bhouari_1980 ] bonjour, je cherche à faire une segmentation d'image par chaine de markov couple (MMC) et triplet (MMT). Est ce que quelqu'un a les codes ? Est ce qu questions sur opengl et opencv [ par lafouf ] salut tout le monde ! j'ai des question a vous poser !concernant opencv , estce que l'utilisation d'open cv et intéressante ( temp de calcule , la m sensors en C++ wrapper ? [ par panthere007 ] Hello Je voudrai me bricoller un petit sof en console pour y afficher des alertes a ma sauce ,osd ,tty, son etc etc... man libsensors fourni bien de agrandir ou rétrécir une image [ par marco62118 ] bonsoir à toutes et tous je commence en C et C++ y a t-il moyen d'agrandir ou rétrécir une image (ex 1280*1024 --->800*600 ou 800*600---->1280*1024 Webcam voiture [ par bidbid21 ] Bonjours, Je voudrais faire un projet qui consiste à utiliser une webcam qui serais a l'avant de ma voiture et qui permeterais sur un ecran de m'affic


Nos sponsors


Sondage...

Comparez les prix

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 : 0,390 sec (4)

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