利用QImage ( uchar * data, int width, int height, int bytesPerLine, Format)示图像
正在利用libv4l做视频采集系统,把采集的图像放到了一个buf里,用Qt显示时 用这种方法没有问题
void RGB2Image(char *srcBuf, int w, int h, QImage *pDistImage)
{
int i;
int r, g, b;
QRgb *point;
uchar *bit;
i = 0;
bit = (uchar *)(srcBuf);
for(int y = 0; y < h; y ++){
for ( int x = 0; x < w; x ++ ){
/* Please attion the Littile-Edian and Big-Edian,
* The Order maybe R-G-B.
*/
b = (int)bit[i];
g = (int)bit[i+1];
r = (int)bit[i+2];
point = (QRgb *)pDistImage->scanLine(y) + x;
*point = qRgb(r, g, b);
i += 3;
}
}
return 0;
}
但是我觉得慢,不知道是不是这个原因啊,尝试用QImage ( uchar * data, int width, int height, int bytesPerLine, Format)
我是这么改的
uchar *bit;
bit = (uchar *)(srcBuf);
QImage image(bit,320,240,320*3,QImage::Format_RGB32);
dawimage 绘图显示就不对了,一堆数据好像是,但是不是我要的图像。图像是没有问题的,因为用以前的方法成功了,而且即使这个是乱码,图像的抓取也是正确的,就是显示不对。不知道还应该怎么改,或者注意什么,望高手指教!
[解决办法]
我看你的像素格式是 BGR, 而 Format_RGB32 是 0x00RRGGBB
所以是不行的。
试试 QImage::Format_RGB888