转换的代码是这样的:
……
int channel = cv_mat.channels();
int type = cv_mat.type();
const uchar *qImageBuffer = (const uchar*)cv_mat.data;
int cols = cv_mat.cols;
int rows = cv_mat.rows;
QImage image;
if (channel == 3) {
QImage img(qImageBuffer, cols, rows, QImage::Format_RGB888);
image = img.rgbSwapped();
}else if(……){
}
……
return image;
可是转换出来的效果却是这样的,下图的左边是转换成QImage后用QLabel显示的,右边的是直接用cv::namedWindow显示的cv::Mat。
同样的方法,莱娜图出来的效果就是对的(其实大多数图片都对)。
我知道转换的结果跟图片的channel,type有关系,需要采用不同的QImage::Format来处理,但是奇怪的是,这两个图片的cv_mat.channels()是一样的(都是3),cv_mat.type()也是一样的(都是16)。但是上面的图像就是不正确。
请高手帮忙分析。
------解决思路----------------------
图片宽度是4的倍数吗?