qt中使用opencv处理图片 QImage 和 IplImage 相互之间转换问题

在Qt中使用OpenCV处理图片并显示到Label时,需要进行QImage与IplImage之间的转换。对于彩色图像,可以使用QImage::Format_RGB888进行转换;而对于二值化后的灰度图像,则需使用QImage::Format_Indexed8。当从YUV摄像头采集数据并转换为RGB后,可通过循环将QImage转换为IplImage格式,便于OpenCV进一步处理。
摘要由CSDN通过智能技术生成

在用opencv处理图片显示在qt label上的时候遇到不是问题

1. qt上要用qimage形式才能显示

IplImage转成 Qimage

彩色图像转换

 IplImage  *fram;

QImage image((const uchar*)fram->imageData, fram->width, fram->height, QImage::Format_RGB888);

在用opencv二值化以后你再转换发现出现label里面显示多个画面而且还有彩色的怎么回事

这时候得换参数

QImage resimg(( uchar*)res->imageData, res->width, res->height, QImage::Format_Indexed8);

参数换后就好了说明QImage::Format_Indexed8就是用来转换灰色图像的

2. yuv摄像头采集的数据图片转换成rgb后生成Qimage我要用opencv处理要转换成lplimage格式这时候就可以这样来写

//转换格式QImage转IplImage
     width = frame->width();
     height = frame->height();
      Size.height = height;
      Size.width = width;
    lplImage * image = cvCreateImage(Size, IPL_DEPTH_8U, 3);
      for (int y = 0; y < height; ++y)
       {
         for (int x = 0; x < width; ++x)
           {
              QRgb rgb = frame->pixel(x, y);
              cvSet2D(image, y, x, CV_RGB(qRed(rgb), qGreen(rgb), qBlue(rgb)));
          }
       }

最后image就是iplimage格式的。你可以把上面的自己封装下每次直接调用很方便。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值