首页 > 其他 > 详细

Qt中IplImage转QImage

时间:2014-01-23 04:40:51      阅读:824      评论:0      收藏:0      [点我收藏+]

        本文只针对IplImage转QImage,对于做图像处理的朋友,经常需要利用opencv,而opencv中图像类型是IplImage,那么最后处理完成的IplImage图像需要转成QImage在Qt中展示出来。这是不可避免的过程。

        网上很多方法讲的都是利用QImage自己的构造函数,但是都是基于彩色图像的。我们做图像处理的知道,一般处理的都是原图转的灰度图,即IplImage就已是灰度图了,所以网上的这些方案都不可行。有的说将QImage::Format_RGB888改为QImage::Format_Indexed8可以,不过我试过不行。所以,最后找到的方法是自己写代码实现灰度图IplImage向QImage的转换,函数代码如下:

QImage IplImgToQImg(IplImage* cvimage)
{
    QImage destImage(cvimage->width,cvimage->height,QImage::Format_RGB32);
    for(int i = 0; i < cvimage->height; i++)
    {
        for(int j = 0; j < cvimage->width; j++)
        {
            int r,g,b;
            if(3 == cvimage->nChannels)
            {
                b=(int)CV_IMAGE_ELEM(cvimage,uchar,i,j*3+0);
                g=(int)CV_IMAGE_ELEM(cvimage,uchar,i,j*3+1);
                r=(int)CV_IMAGE_ELEM(cvimage,uchar,i,j*3+2);
            }
            else if(1 == cvimage->nChannels)
            {
                b=(int)CV_IMAGE_ELEM(cvimage,uchar,i,j);
                g=b;
                r=b;
            }
                destImage.setPixel(j,i,qRgb(r,g,b));
         }
    }
    return destImage;
}

        代码可用,对单通道(灰度)图可以顺利转成QImage可见。


Qt中IplImage转QImage

原文:http://blog.csdn.net/seanwang_25/article/details/18667411

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!