Convert between cv::Mat and QImage 两种图片类转换

Posted Grandyang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Convert between cv::Mat and QImage 两种图片类转换相关的知识,希望对你有一定的参考价值。

 

在使用Qt和OpenCV混合编程时,我们有时需要在两种图片类cv::Mat和QImage之间进行转换,下面的代码参考了网上这个帖子

 

//##### cv::Mat ---> QImage #####

// Shallow copy
QImage mat2qimage_ref(cv::Mat &m, QImage::Format format) {
    return QImage(m.data, m.cols, m.rows, m.step, format);
}

// Deep copy
QImage mat2qimage_cpy(cv::Mat &m, QImage::Format format) {
    return QImage(m.data, m.cols, m.rows, m.step, format).copy();
}

//##### QImage ---> cv::Mat #####

// Shallow copy
cv::Mat qimage2mat_ref(QImage &img, int format) {
    return cv::Mat(img.height(), img.width(), format, img.bits(), img.bytesPerLine());
}

// Deep copy
cv::Mat qimage2mat_ref(QImage &img, int format) {
    return cv::Mat(img.height(), img.width(), format, const_cast<uchar*>(img.bits()), img.bytesPerLine()).clone();
}

 

以上是关于Convert between cv::Mat and QImage 两种图片类转换的主要内容,如果未能解决你的问题,请参考以下文章

资料收集Converting Between cv::Mat and QImage or QPixmap

mwArray和cv::Mat转化函数 20170812

cv::mat与unsigned char*相互转化之间的转换

使用 OpenCV 在 C++ 中将 std::list 转换为 cv::Mat

【OPENCV】cv::Mat像素遍历方法比较

open cv mat怎样将数据类型转化为double