关于QImage和IplImage之间转换的实现


在嵌入式系统中实现qt和opencv的处理,最基础的就是QImage和IplImage之间的转换。这样两者就可以进行一起使用图像数据,从而达到利用qt显示和利用opencv处理的功能。

下面我将贴出代码:

QImage   ----->> IplImage

  1. QImage *IplImageToQImage(const IplImage *img)   
  2. {   
  3.     QImage *image;   
  4.     cvCvtColor(img,img,CV_BGR2RGB);   
  5.     uchar *imgData=(uchar *)img->imageData;   
  6.     image=new QImage(imgData,img->width,img->height,QImage::Format_RGB888);   
  7.     return image;   
  8. }     

IplImage  ------->>QImage

  1. IplImage *QImageToIplImage(const QImage * qImage)   
  2. {   
  3.     int width = qImage->width();   
  4.     int height = qImage->height();   
  5.     CvSize Size;   
  6.     Size.height = height;   
  7.     Size.width = width;   
  8.     IplImage *IplImageBuffer = cvCreateImage(Size, IPL_DEPTH_8U, 3);   
  9.     for (int y = 0; y < height; ++y)   
  10.     {   
  11.         for (int x = 0; x < width; ++x)   
  12.         {   
  13.             QRgb rgb = qImage->pixel(x, y);   
  14.             cvSet2D(IplImageBuffer, y, x, CV_RGB(qRed(rgb), qGreen(rgb), qBlue(rgb)));   
  15.         }   
  16.     }   
  17.     return IplImageBuffer;   
  18. }  

相关内容