我有一个unsigned char*
包含 jpeg 图像数据的缓冲区。我想使用 c++ 和 opencv 显示该图像。如果我做:
Mat img(Size(640, 480), CV_8UC3, data);
namedWindow("image", 1);
imShow("image", img);
我得到一堆嘈杂的像素。
我想这是因为数据是 jpeg(带有标题)。因为这有效:
Mat imgbuf(Size(640, 480), CV_8UC3, data);
Mat img = imdecode(imgbuf, CV_LOAD_IMAGE_COLOR);
但是我不能使用 imdecode 函数,因为它来自基于 GTK 2 的 highgui.h,在我的项目中我使用 GTK 3。
那么,如何显示缓冲区数据呢?有没有办法在opencv中解码jpeg图像而不是imdecode,如果这是问题的话。我真的不想用Qt重建opencv ...
还有其他建议吗?
(使用 Linux)