qt显示RGB彩色图

        
        for(int i = 0;i 
  
        {
            for(int j = 0;j 
  
            {
                ImageRGB_m[i*3*width+3*j]  =ImageR_m[i*width+j];
                ImageRGB_m[i*3*width+3*j+1]=ImageG_m[i*width+j];
                ImageRGB_m[i*3*width+3*j+2]=ImageB_m[i*width+j];
            }
        }
        QImage *tempImage=new QImage(ImageRGB_m,width,height,QImage::Format_RGB888);
        ImageLable_m->setImagePix(tempImage);
        ImageLable_m->show();

 
  
        ui->image_LB_show->setPixmap(QPixmap::fromImage(*image));

中间的ImageLable_m是我自己写的一个专门用于显示图片包含QLabel的一个类.这个是在5.5.1版本中可以先试采土代码。

网上发现很多人说RGB的彩图显示不了,最开始我的也是现实不了,后来发现是
QImage(ImageRGB_m,width,height,QImage::Format_RGB888);这个是个重载函数,如果要限定每一行的
数据大小,切记不要限定为width,这样也是导致显示不了的主要原因,这时候看tempImage的调试信息
显示位invalid,将限定数据大小的去掉就可以正常显示彩图了。也就是不要写成
QImage(ImageRGB_m,width,height,width ,QImage::Format_RGB888);,如果要防止图片扭曲可以写成下面这样就可以了
 
  
        QImage *tempImage=new QImage(ImageRGB_m,width,height,3*width,QImage::Format_RGB888);
 
  
防止图片扭曲:
同时限定每一行的数据大小可以保证
图片显示不扭曲,这里之前也是一直搞不懂图片为什么会扭曲,其实就是没有限定每一行数据的大小,当,
不限定每一行数据的大小的时候磨人的貌似是8的倍数的就刚好可以显示,否则就会发生错行,也就是扭曲
的了。qt里面有很多需要注意的细节的了,希望对遇到同样问题的人有帮助。
 
  
 
  

你可能感兴趣的:(qt)