在处理一个二值化图形时,需要将Mat数据传给QImage,并将QImage在窗口显示出来。
在openCV3.4.2中是这样用:
Mat rgbImg;
//获取二值化rgbImg图形数据
QImage img = QImage( static_cast<const unsigned char*>( rgbImg.data ), rgbImg.cols, rgbImg.rows, QImage::Format_Grayscale8 );
发现没有问题,图像可以正常显示。后来升级到openCV4.1.0时图像显示发生了扭曲,多方查找原因最后发现需要将单通道Mat数据转成3通道就可以了。代码语句改为如下所示:
Mat rgbImg;
//获取二值化rgbImg图形数据
cv::cvtColor( rgbImg, rgbImg, COLOR_GRAY2RGB );
QImage img = QImage( static_cast<const unsigned char*>( rgbImg.data ), rgbImg.cols, rgbImg.rows , rgbImg.cols*rgbImg.channels(), QImage::Format_RGB888 );