opencv lire l'image jpeg à partir du tampon
J'ai un unsigned char*
tampon contenant les données d'une image jpeg. Je voudrais afficher l'image à l'aide de c++ et opencv. Si je fais:
Mat img(Size(640, 480), CV_8UC3, data);
namedWindow("image", 1);
imShow("image", img);
- Je obtenir un désordre bruyant de pixels.
Je suppose que c'est parce que les données sont au format jpeg (avec un en-tête). Car cela fonctionne:
Mat imgbuf(Size(640, 480), CV_8UC3, data);
Mat img = imdecode(imgbuf, CV_LOAD_IMAGE_COLOR);
MAIS je ne peux pas utiliser le imdecode fonction que c'est à partir de highgui.h qui est basé sur GTK 2, et dans mon projet j'utilise GTK 3.
Alors, comment puis-je afficher le tampon de données? Est-il un moyen pour décoder l'image jpeg, autres que imdecode dans opencv, si c'est ça le problème. Je n'ai pas vraiment envie d'avoir à reconstruire opencv avec Qt...
Toutes les autres suggestions?
(À L'Aide De Linux)
source d'informationauteur Matekk
Vous devez vous connecter pour publier un commentaire.
J'ai décompressé l'image JPEG à l'aide de
libjpeg
en utilisant la procédure standard décrite dans la libjpeg documentation de l'API sous "Décompression détails".Après avoir décompressé les données que vous pouvez utiliser pour construire la
cv::Mat
. Rappelez-vous, le décompressé l'image est au format RGB, alors que openCV utilise un BGR format uncvtColor()
opération avec le formatCV_RGB2BGR
est nécessaire.