Bonjour,
J'utilise une caméra IEEE1394 et windows XP.
J'écris mes programmes sous Code::blocks.
J'ai voulu essayer un programme pour afficher les images de ma caméra, mais ça fonctionne pas.
Il ouvre bien la fenêtre où doit être l'image mais elle est grisée.
Quelqu'un aurait t-il une piste ?
J'ai essayé avec un autre programme. Il m'affiche bien ce qu'il y a sur la caméra.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 #include <highgui.h> #include <cv.h> int main() { IplImage* img; CvCapture* capture = cvCreateCameraCapture( -1 ); if( !capture ) return 10; cvNamedWindow("video", CV_WINDOW_AUTOSIZE); char key = ''; // ICI j'ai mis char key='NULL' sinon ça ne compile pas if(!cvGrabFrame( capture )) return 20; while(key != 'q') { img = cvRetrieveFrame( capture ); cvShowImage( "video", img ); key = cvWaitKey(10); if(!cvGrabFrame( capture )) key = 'q'; } cvDestroyAllWindows(); img = NULL; cvReleaseCapture( &capture ); return 0; }
En revanche dans la fonction callback, là où on peut traiter nos images et bien moi je n'y arrive pas. J'ai l'impression que c'est pas une image qui m'est renvoyé alors qu'il affiche correctement.
Quand je demande des infos sur l'image dans la fonction callbak, j'obtiens :
nChannels ==> 112
nSize ==> 43974120
depth ==> 3
height ==> 8
width ==> 1
DataOrder ==> 4343634
D'où cela pourrait venir ???
Voici le second code :
Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58 #include "cvcam.h" #include "highgui.h" #include "iostream" #include "stdio.h" #include "cxcore.h" void callback(IplImage* image); int taille_image = 0; int nombre_channel = 0; int profondeur = 0; int hauteur, largeur, data_order ; int ShowCamVideo(HWND hwnd, int width, int height) { VidFormat vidFmt={ 1280, 960, 15.0}; int ncams = cvcamGetCamerasCount( ); cvcamSetProperty(0, CVCAM_PROP_ENABLE, CVCAMTRUE); cvcamSetProperty(0, CVCAM_PROP_CALLBACK,(void*)callback); cvcamSetProperty(0, CVCAM_PROP_WINDOW, &hwnd); cvcamSetProperty( 0, CVCAM_PROP_SETFORMAT, &vidFmt); if( !cvcamInit() ) return 0; cvcamStart(); return 1; } int main( int argc, char** argv ) { cvNamedWindow("cvcam window", CV_WINDOW_AUTOSIZE); if( ShowCamVideo((HWND)cvGetWindowHandle("cvcam window"), 1280, 960) ) { cvWaitKey(0); cvcamStop(); } cvcamExit(); } void callback(IplImage* image) { nombre_channel = image->nChannels; taille_image = image ->nSize; profondeur = image -> depth; hauteur = image -> height; largeur = image -> width; data_order = image -> dataOrder; printf("Nombre channel : %d \n Size : %d \n Depth : %d \n Hauteur : %d \n Largeur : %d \n DataOrder : %d\n\n",nombre_channel,taille_image,profondeur,hauteur, largeur, data_order); }
Partager