Bonjour,

J'ai un petit problème quand j'utilise cvCreateImage associé à cvCloneImage, en effet j'ai le message suivant :
OpenCV Error: Bad argument (Bad image header) in cvCloneImage, file [...]/OpenCV-2.0.0/src/cxcore/cxarray.cpp, line 3085
En fait je dois afficher une image de taille quelconque (généricité), en niveau de gris. Pour cela je crée une image avec :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
cvCreateImage(cvSize(width, height), IPL_DEPTH_8U, 1);
Et je l'initialise à "gris" :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
	for(int i=0; i<i_width; i++)
		for(int j=0; j<i_height; j++)
			((uchar *)(i_img->imageData + i*i_img->widthStep))[j]=125;
Cette image est vouée à être modifiée pixel par pixel de façon dynamique, mais en partant à chaque fois de la base. Pour afficher une modification, je fais l'hypothèse que cvCloneImage est plus rapide que mon initialisation, puis je modifie les quelques pixel à modifier :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
initImageDeBase();
for(...)
{
    IplImage* _tmp_cart_img = cvCloneImage(img_de_base);
    ((uchar *)(_tmp_cart_img->imageData + (unsigned int)_x*_tmp_cart_img->widthStep))[(unsigned int)_y]=_vPixel;
    cvShowImage("Events_cartesien", _tmp_cart_img);
    cvWaitKey(10);
    cvReleaseImage(&_tmp_cart_img);
}
En cherchant j'ai vu qu'il existait une méthode qui était censée initialiser le header,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
cvInitImageHeader( image, *size, IPL_DEPTH_8U, channel)
, mais ça ne change rien, ou alors je l'utilise mal ...

Si vous avez une piste je suis preneur.

Merci à vous.

Clercq.