Qt使用OPencv显示图片,图片显示成灰色且原图被修改

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);

更正代码后到效果图:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值