QT中使用Opencv库在QLabel控件上显示一张彩色图片,显示后的图片呈灰色,且原图被分割
原始图:
用Opencv显示效果图:
实现代码:
QString imgPath = "faces.jpg";
Mat imgData = imread(imgPath.toLatin1().data());
cvtColor(imgData,imgData,COLOR_BGR2RGB);
QImage myQImg = QImage((const unsigned char*)(imgData.data),imgData.cols,imgData.rows,QImage::Format_RGB888);
ui->viewLabel->setPixmap(QPixmap::fromImage(myQImg.scaled(ui->viewLabel->size(),Qt::KeepAspectRatio)));
问题分析和解决:
用Mat表示的图像数据在转化为QImage图像时,Mat对象的step参数可以辅助Mat对象更准确的转化成QImage对象
QImage myQImg = QImage((const unsigned char*)(imgData.data),imgData.cols,imgData.rows,imgData.step,QImage::Format_RGB888);
更正代码后到效果图: