首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

利用QImage ( uchar * data, int width, int height, int bytesPerLine, Format)示图像,该怎么

2013-01-08 
利用QImage ( uchar * data, int width, int height, int bytesPerLine, Format)示图像正在利用libv4l做视

利用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

热点排行