Bonjour,
J'ai une image jpg dans un buffer, elle fait 960*720 (la qualité est de 100%).
J'ai fait ce code :
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é
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
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
Partager