Bonjour,

J'ai une image jpg dans un buffer, elle fait 960*720 (la qualité est de 100%).

J'ai fait ce code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
unsigned char * data = new unsigned char[length];
 
....
 
// affichage et sauvegrade de l'image
Mat rawData( 1, length, CV_8UC1, (void*)data );
cv::Mat decodedImage = cv::imdecode( rawData, cv::IMREAD_COLOR /*, flags */ );
 
if ( decodedImage.data != NULL )
{
   cv::imwrite(FileName, decodedImage);
   imshow("Preview", decodedImage);
}
Cela fonctionne, sauf que j'ai une image de 640*480 et non de 960*720 à l'affichage et à la sauvegarde.

J'ai tenté
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Mat rawData( cv::Size(960, 720), CV_8UC1, (void*)data);
Mais cela plate sur imdecode :
error: (-215:Assertion failed) buf.checkVector(1, CV_8U) > 0 in function 'imdecode_'

Si je sauve mon buffer comme ceci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
ofstream file ( FileName, ios::binary );
file.write ( ( char* ) data,   length );
file.close();
J'ai bien un JPG de 960*720.

Je ne voie pas ce qui provoque cela, une idée ?

Merci
Steph