相机的例程当中得到的是unsigned char*格式,但我要在Qt显示上显示需要转成QImage格式。之前我使用的方式是把uchar*转换为Mat格式再转换为QImage格式,这种方法在网上很容易搜到,但我查的时候没有找到很明确的将unsigned char*转成QImage格式的方法。
一般相机库内会有将bayer格式图像转成RGB格式的unsigned char指针(需要注意的是,转成的RGB的顺序,有的函数转成的图像是BGR格式)。之后如何将其转成QImage并显示。
其实原理很简单,和Mat转QImage是一样的,我也是借鉴了Mat转QImage的方法。
首先需要的知道的是所得图像的width和height,这个相机采到的图像像素是很明确的。以下我的采到的图像是1920 * 1200。
unsigned char* image;
QImage img(image,1920,1200,5760,QImage::Format_RGB888);
image就是你采到的unsigned char* 图像格式的数据,第四个参数是一行图像的数据量,因为横坐标方向上的像素个数是1920,而每个像素点包含RGB三个分量,因此是5760。之后在创建的label窗口上显示就可以看到图像了。
ui->label->setScaledContents(true);
ui->label->setPixmap(QPixmap::fromImage(img));