在嵌入式系统中实现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. }
05-28 00:56