QImage互转cv::Mat

Mat转QImage

QImage MainWindow::cvMat_To_Qimage(Mat &m){

    if(m.type() == CV_8UC3){//RGB888

        uchar* data = (uchar*)m.data;

        int w = m.cols;

        int h = m.rows;

        QImage image(data,w,h,QImage::Format_RGB888);

        return image.rgbSwapped();//QT默认的图像格式是RGB,Mat默认是BGR,为了可以正常使用,需要转换类型

    }

}

QImage转Mat

void QImage_To_cvMat(QImage&img,cv::Mat&m);

void MainWindow::QImage_To_cvMat(QImage &img, Mat &m)

{

    img = img.rgbSwapped();

    if(img.format() == QImage::Format_RGB888){

      m = Mat(img.height(),img.width(),CV_8UC3,(void*)img.constBits());

    }

}

你可能感兴趣的:(图像处理,QImage,Mat)