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 :
cvCreateImage(cvSize(width, height), IPL_DEPTH_8U, 1);
Et je l'initialise à "gris" :
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 :
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,
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.
Partager