Qt 中的image 和 Opencv 中的 Mat 之间的相互转换

本文介绍了在使用Qt界面显示图像时,如何在Qt的QImage类和OpenCV的Mat类之间进行数据转换,以便于进行图像处理操作。
摘要由CSDN通过智能技术生成

编写QT界面时,显示图像用Qt 自带的 QImage 类非常方便;

但是如果要对图像进行处理,首选的是Opencv库,这个时候就需要用到QImage 和 Opencv Mat 两种数据之间的转换。

void convertMattoQImage( Mat_<Vec3b>& img_cv, QImage &img_qt)
{
  img_qt.convertFormat(QImage::Format_RGB32); // 将QImage 转换成32位格式 32位格式是最便于处理 
  image_qt.scaled(img_cv.rows, img_cv.cols);
  int lineNum = 0;
  int height = img_cv.rows;
  int width =  img_cv.cols;
  uchar* imgBits = img_qt.bits();  // img_qt 的首字节地址
  for( int i=0; i<height; i++ )
     {
        lineNum = i* width*4;       
        for(int j=0; j<width; j++)
           { 
                             imgBits[lineNum + j*4 + 2] = img_cv(i, j)[2];        
                             imgBits[lineNum + j*4 + 1] = img_cv(i, j)[1];
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值