Qt中通过控件平滑处理图像并且显示在Label标签中

接着上一个例子Qt中通过控件在Label标签中显示一张静态图片我又加入了平滑处理图像并且显示处理后图像的功能

先上具体效果图:

Qt中通过控件平滑处理图像并且显示在Label标签中_第1张图片

对应的样式如下

Qt中通过控件平滑处理图像并且显示在Label标签中_第2张图片

接着我们来讲一下会用到的一个重要知识点:IplImage转成QImage格式

首先我们要知道在opencv中如果用IplImage定义一副图像的话他的格式一般我们定义的是3通道,24位深度的彩色图像,但是三原色排列是按照BGR排列的

但是QT中定义的QImage的3通道24位深度的彩色图像的确实RGB彩图,所以我们需要将IplImage图像转换成为QImage图像,然后通过Label标签将处理后的图像显示出来,这时我们采用的方法是将QImage转换为QPixmap图像;

我们可以通过下面这段代码来实现:

//从OpenCv的Iplimage格式转换成Qt中Qimage格式

    IplImage* temp=NULL;                                       //定义一个临时转换的图像
    temp=cvCloneImage(Smooth_image);                          //临时图像就是克隆的你用CV平滑处理过后的图像
    cvCvtColor(Smooth_image,temp,CV_BGR2RGB);                 //将BGR转成RGB
    uchar* imgData = (uchar*)(temp->imageData);                 
    QImage *qImg1=new QImage(imgData,temp->width,temp->height,QImage::Format_RGB888); //获取QImage图像,QImage::Format_RGB888格式为
 
 
或者可以封装成下面的子函数

QImage* IplToQImg(const IplImage *cvImg)
{
if(!cvImg)
return NULL;
IplImage* temp=NULL;
temp=cvCloneImage(cvImg);
cvCvtColor(cvImg,temp,CV_BGR2RGB);
uchar* imgData = (uchar*)(temp->imageData);
QImage *qImg=new QImage(imgData,temp->width,temp->height,QImage::Format_RGB888);
return qImg;
cvReleaseImage(&temp);
delete imgData;
}

这样便于随时调用,因为这是经常用到的函数。

接下来我们就可以完成我们的目标完成高斯模糊,这个相对比较成熟,可以参考下这位博主写的

http://blog.csdn.net/augusdi/article/details/8762971

今天就写到这,源码地址为http://download.csdn.net/detail/u014020344/9313483

 

你可能感兴趣的:(OpenCV与Qt结合的学习)