opencv的Mat与qt的QImage之间转换的首要问题在于QImage是rgb排列而Mat是bgr排列,不过好在opencv提供了颜色空间转换的函数cvtColor,通过它可以实现RGB颜色向HSV,HSI等颜色空间的转换,也可以转换为灰度图像(CV_BGR2GRAY)。
Mat m;
m = imread("F:\\1.png");
cvtColor(m,m,CV_BGR2RGB);
QImage image;
image = QImage((const unsigned char*)(m.data),
m.cols,m.rows,
m.cols*m.channels(),
QImage::Format_RGB888);
QLabel label;
label.setPixmap(QPixmap::fromImage(image));
label.resize(image.size());
label.show();