Qt显示OpenCV的单通道图片

发布时间 2023-12-08 17:43:44作者: 飘杨......

一、概述

  Qt中显示OpenCV的图片。OpenCV中的Mat默认是3通道图片。但是其灰度图、二值图片会是8位单通道的。

  示例代码中记录了如何显示

二、代码示例

#include "ImageUtils.h"

Mat ImageUtils::qImageToMat(QImage qImage) {//QImage转Mat三通道图片
    QImage image = qImage.convertToFormat(QImage::Format_RGB888);
    Mat mat = Mat(image.height(), image.width(), CV_8UC3, image.bits(), image.bytesPerLine());
    return mat;
}

QImage ImageUtils::matToQImage(Mat src) {
    cvtColor(src, src, COLOR_BGR2RGB);//转换色彩空间,因为Mar默认是BGR,要转换为RGB
    QImage qImage(src.data, src.cols, src.rows, src.step, QImage::Format_RGB888);
    return qImage;
}

QImage ImageUtils::matToQImage8(Mat src) {//QImage显示Mat的8位单通道图片
    QImage qimage(src.data, src.cols, src.rows, src.step, QImage::Format_Grayscale8);
    return qimage;
}