Mat转换为QImage

  

请留意:

opencv为3.0.0版本,Qt为4.8.4版本

 1 #include"image1.h"
 2 #include<QApplication>
 3 #include<QImage>
 4 #include<QDebug>
 5 #include<opencv2/opencv.hpp>
 6
 7 int main(int argv , char* argc[] ){
 8
 9     QApplication a(argv,argc);
10     QImage img;
11     cv::Mat mat = cv::imread("D:\\image\\4.png",true);
12     if(mat.empty()){
13
14         qDebug()<<"load image fail!";
15       return a.exec();
16     }
17     int chana = mat.channels();
18     //依据通道数不同,改变不同的装换方式
19     if(3 == chana ){
20         //调整通道次序
21         cv::cvtColor(mat,mat,CV_BGR2RGB);
22         img = QImage(static_cast<uchar *>(mat.data),mat.cols,mat.rows,QImage::Format_RGB888);
23     }else if(4 == chana ){
24         //argb
25         img = QImage(static_cast<uchar *>(mat.data),mat.cols,mat.rows,QImage::Format_ARGB32);
26     }else {
27         //单通道,灰度图
28         img = QImage( mat.cols, mat.rows , QImage::Format_Indexed8);
29         uchar * matdata = mat.data;
30         for(int row = 0 ; row <mat.rows ; ++row ){
31             uchar* rowdata = img.scanLine( row );
32             memcpy(rowdata,matdata ,mat.cols);
33             matdata+=mat.cols;
34         }
35     }
36     Image1 w ;
37     w.load(img);
38     w.show();
39   return a.exec();
40 }

效果图:

用Qimage进行缩放:

     

当然也可以用opencv自带的imshow进行显示

时间: 2024-08-08 04:54:45

Mat转换为QImage的相关文章

OpenCV图片类cv::Mat和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 QI

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 QI

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

参考: 方法一 Convert between cv::Mat and QImage 两种图片类转换 - Grandyang - 博客园 http://www.cnblogs.com/grandyang/p/5602360.html 方法二 QImage 与 cv::Mat 之间的相互转换 - Ivan 的专栏 - 博客频道 - CSDN.NET http://blog.csdn.net/liyuanbhu/article/details/46662115 方法三 Converting Betw

Qt 编程指南10 QImage Mat QPixmap转换

  //示例 pushButtonOpenPicBig按钮clicked单击动作触发 void Qt_Window::on_pushButtonOpenPicBig_clicked() { string filename =GetFileName() ; // 获取图像路径 Mat picMat= imread(filename, 1); // 读取保存为opencv Mat类图像 QPixmap picQPixmap = MatToQT(picMat); //opencv Mat类图像转换QT

OpenCV学习(2)--cv::Mat转化为QImage

一.目的 在使用Qt和OpenCV写程序的时候,有时候需要使用OpenCV进行处理,然后使用Qt显示出来,因此,有必要考虑将如何将cv::Mat类型转换为QImage类型. 二.原理 网上主流的做法是使用QImage的构造函数进行转换,主要是使用cv::Mat的data来构造一个QImage类型,这样做确实可以达到转换目的,但是,因此这样构造出来的QImage本身并不保存data,因此,在QImage的生存周期内,必须保证cv::Mat中的数据不会被释放.上面的这个问题也是比较容易解决的,主要是

QImage 与 cv::Mat 之间的相互转换

最近做图像处理方面的项目比较多,很多算法自己从头写的话太浪费时间,而且自己写的也不一定完善,早就听说OpenCV在图像处理算法方面功能很强大,一直没时间学习,这次正好项目用到了,临时抱佛脚学习些OpenCV入门知识.因为我的程序界面都是用Qt写的,因此也花了点时间研究了如何将OpenCV 和Qt 融合在一起,协同工作. Qt 中处理图像主要用的是QImage类,OpenCV中主要用的是cv::Mat类.下面的两个函数可以用来实现这两个类相互转换. QImage cvMat2QImage(cons

【转】OpenCV与CxImage转换(IplImage)、IplImage QImage Mat 格式互转

最近由于在项目中用到了Opencv库,但是为了更好的显示图像还是使用了Cximage库,它可以快捷地存取.显示.转换各种图像.Opencv库用于高级图像处理与识别.为了使Cximage图像与Opencv图像交互,写了个Cximage转换到IplImage的类. OpenCV2CXimage.h #pragma once /* * 类说明:OpenCV图像与CXimage图像互转 * 用于OpenCV的图像与CXimage图像格式互转进行封装. OpenCV的图像位数必须是大等于8的整数倍,支持B

IplImage 与 QImage 相互转换

在使用Qt和OpenCV编程时,对于它们各自的图像类QImage和IplImage难以避免的需要互相之间的转换,下面我们就来看它们的相互转换. 1. QImage 转换为 IplImage IplImage *QImageToIplImage(const QImage * qImage) { int width = qImage->width(); int height = qImage->height(); CvSize Size; Size.height = height; Size.wi

QT 12 QTimage转换Mat

QImage cvMat2QImage(const cv::Mat& mat) { // 8-bits unsigned, NO. OF CHANNELS = 1 if(mat.type() == CV_8UC1) { QImage image(mat.cols, mat.rows, QImage::Format_Indexed8); // Set the color table (used to translate colour indexes to qRgb values) image.se