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

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Une sorte de capture d'image...


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

Une sorte de capture d'image...

mercredi 29 septembre 2004 à 11:05:18 | Une sorte de capture d'image...

tsc

Membre Club
Bonjour,
Voilà j'ai un petit problème avec une source qui permet de capturer l'image de sa
webcam. source = http://www.cppfrance.com/code.aspx?ID=24541

Mon problème est que ce code à l'aire de faire une sorte de print screen, au lieu de
lire directement dans le HDC. Par exemple quand je passe une fenêtre par dessus l'image
source ou tous simplement si je ne fait pas afficher l'image source.

Quelqu'un a une idée pour pouvoir capturer les pixel d'un HDC sans que ce HDC soit afficher?
En sachant que le je connais le HDC(hDC_WC) et le HWND (hWnd_WC) de mon image source ??

Merci d'avance
Tsc

void CWebCam::ChargeCapture(int ID_Bmp)
{
int i, j; // Bcl
int R, G, B; // Recupère des infos

HDC hDC_tmp; // Pour récupérer les pixels
LPBYTE lpBits = new BYTE[4*320*240]; // Idem
HWND hwnd=hWnd_WC; // Fenetre de la capture
HDC memdc, hdc; // DC
void *pBits; // Tbl de pixel
HBITMAP hbmp; // Image
BITMAPINFO bmpinfo; // info sur l'image
HGDIOBJ hret; // Pour récupérer l'image

hdc = hDC_WC; // Va avec le hWnd

// C'est marqué
if(!(memdc = CreateCompatibleDC(hdc)))
return;

// Donne les infos sur le bitmap
bmpinfo.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
bmpinfo.bmiHeader.biWidth = 320;
bmpinfo.bmiHeader.biHeight = 240;
bmpinfo.bmiHeader.biPlanes = 1;
bmpinfo.bmiHeader.biBitCount = 32;
bmpinfo.bmiHeader.biCompression = BI_RGB;
bmpinfo.bmiHeader.biSizeImage = 0;
bmpinfo.bmiHeader.biXPelsPerMeter = 0;
bmpinfo.bmiHeader.biYPelsPerMeter = 0;
bmpinfo.bmiHeader.biClrUsed = 0;
bmpinfo.bmiHeader.biClrImportant = 0;

// Création du bitmap
hbmp = CreateDIBSection(hdc, &bmpinfo, DIB_PAL_COLORS, &pBits, NULL, 0);

// En cas d'erreur
if(!hbmp)
{
// Fait le ménage
DeleteObject(hbmp);
DeleteDC(memdc);
free(pBits);
return;
}

// Sélectionne le mendc avec l'image
hret = SelectObject(memdc, hbmp);
if(!hret || (hret == HGDI_ERROR))
{
// Fait le ménage
DeleteObject(hbmp);
DeleteDC(memdc);
free(pBits);
return;
}

// Colle l'image
if(!BitBlt(memdc, 0, 0, 320, 240, hdc, 0, 0, SRCCOPY))
{
// Fait le ménage
DeleteObject(hbmp);
DeleteDC(memdc);
free(pBits);
return;
}

// Récupère le DC
hDC_tmp=GetDC(NULL);

// Récupère les pixels
GetDIBits(hDC_tmp, hbmp, 0, 240, lpBits, &bmpinfo, DIB_RGB_COLORS);

// Fait le ménage
ReleaseDC(NULL, hDC_tmp);

// Parcoure les pixels et les stocke dans un tbl
for(i=0; i<240; i++)
for(j=0; j<320; j++)
{
// Récupère chaque coef du RGB
TblImage[ID_Bmp].points[i][j].R = R = lpBits[4*320*(239-i)+4*j+2];
TblImage[ID_Bmp].points[i][j].G = G = lpBits[4*320*(239-i)+4*j+1];
TblImage[ID_Bmp].points[i][j].B = B = lpBits[4*320*(239-i)+4*j];

// Calcul la couleur
TblImage[ID_Bmp].points[i][j].Couleur = R + 256*G + 256*256*B;
}


// Fait le ménage
free(lpBits);
DeleteObject(hbmp);
DeleteDC(memdc);
}
vendredi 1 octobre 2004 à 13:12:05 | Re : Une sorte de capture d'image...

LordBob

Membre Club
salut, regarde la source que j'ai fait:
http://www.cppfrance.com/code.aspx?ID=25831

elle permet de voir l'image vu par la webcam, de prendre des captures et de l'envoyer sur un serveur ftp
Bob...

"La chance accorde ses faveur aux esprits avertis..."
mercredi 6 octobre 2004 à 09:52:27 | Re : Une sorte de capture d'image...

tsc

Membre Club
Réponse acceptée !
Merci de ton aide mais il me semble à première vue que l'image soit obligé d'être affichée pour être capturée

Tsc
lundi 8 novembre 2004 à 12:15:02 | Re : Une sorte de capture d'image...

bilal


en c++ builder


AnsiString FichierHTML;
FichierHTML = "c:\\test.bmp";
WideString Url = FichierHTML;
VideoCapX->SaveFrame(Url);
Image1->Picture->LoadFromFile(Url);

si tu ne veut pas qu'on voit la web came alors met son etat

visible = false;

@+
VGTA


Cette discussion est classée dans : image, bmiheader, hdc, hbmp, bmpinfo


Répondre à ce message

Sujets en rapport avec ce message

[API Win32]centrer une image mise en background [ par sethesh ] Salut à tous dans une appli Win32 j'affiche une image en background en fond de ma fenetre principale. Cette image est centrée en haut a gauche par def Un bouton imagé [ par victorcoasne ] Comment faire pour que sur un bouton apparaisse l'image ?J'ai trouvé comment faire apparaître une image : void PrintBmp(HWND hWnd, char *filename, i afficher une image contenue dans un HDC [ par aujeanfr ] Bonjour,j'essaie d'afficher une image contenue dans un HDC après un traitement d'image avec setpixel().Voici mon code : // je fais mon traitement d'im Pixel vide [ par sabran ] Salut, Je veux lire la valeur RGB d'un pixel avec GetDIBits. J'ai pris un code que j'ai vu plusieurs fois sur le forum. Tout marche sauf quand je veux Convertir un bmp monochrome en couleur? [ par freehair ] Je veux afficher une image noir et blanc et faire une analyse en couleur dessus.Ca marche quand je pars d'une image en couleur(j'ai modifié l'image ma Probléme de compilation [ par makina0711 ] Bonjour a tous j'ai cette source pour ouvrire mon bmp mais a cette ligne il y a une ereure: DrawState(hdc,NULL,NULL,(long)hBmp,NULL,10,10,0,0,DST_BI Manipulation de bitmap (SetDIBits) [ par _michel ] Encore une fois, j'ai un problème avec les bitmaps.J'ai bien cherché, en comparant avec un programme qui fonctionne, mais j'ai rien trouvé.Voila le co Il manque une partie de l'image (fond d'une fenêtre) [ par papi2 ] Bonjour,Quand je peux mettre l'image entière, elle ne prend pas les dimentions de MAXIMIZE (par exemple).Avec ce code:Je n'ai qu'une portion de l'imag format bmp 24 bits [ par nicolovitch ] Bonjour à tous,   <p class="MsoNormal" style="MAR Winapi avec langage C : Comment afficher un texte dans une fenêtre en rafraichissant le texte par un autre. [ par sanderriere ] Bonjour, Comment faire en sorte d'afficher un texte dans une fenêtre et de pouvoir ensuite faire en sorte de le modifier lorsqu'on le souhaite par un


Nos sponsors


Sondage...

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

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