当前位置: 代码迷 >> QT开发 >> OpenCV的cv:Mat转换为Qt的QImage是歪斜失真的,
  详细解决方案

OpenCV的cv:Mat转换为Qt的QImage是歪斜失真的,

热度:173   发布时间:2016-04-25 03:08:22.0
OpenCV的cv::Mat转换为Qt的QImage是歪斜失真的,请指教!
转换的代码是这样的:
 
……
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的倍数吗?
  相关解决方案