vs2015+Qt5.8+opencv 显示一幅图像

2017-04-06

方法一:不使用opencv,使用Qt自带的load函数。

在主窗口的构造函数中添加如下:

    //ui->setupUi(this);  在后面添加
    QImage myImage;  
    myImage.load("lena.jpg");    
    ui.labelimage->setPixmap(QPixmap::fromImage(myImage).scaled(ui.labelimage->size())); 

方法二:使用opencv

配置opencv

在搭建好Qt5.7和Vs2015后,配置opencv,我使用的是opencv3.1。
右击项目》》属性》》VC++目录》》配置包含目录和库目录。
在包含目录中添加:
D:\opencv\opencv\build\include
D:\opencv\opencv\build\include\opencv
D:\opencv\opencv\build\include\opencv2

在库目录中添加
D:\opencv\opencv\build\x64\vc14\lib

在链接器》》输入》》附加依赖项中添加lib文件:
opencv_world310d.lib
同理在Release模式下添加opencv_world310.lib

导入图片

添加头文件opencv2\opencv.hpp
添加button:命名为open
添加label,用于显示图片,命名为imagelabel
手动添加槽和信号,信号是click(),槽函数是:on_openButton_clicked()

void MyTest::on_openButton_clicked()
{
    QString fileName = QFileDialog::getOpenFileName(this, tr("Open Image"),
        ".", tr("Image Files (*.png *.jpg *.bmp)"));
    qDebug() << "filenames:" << fileName;
    src = cv::imread(fileName.toLatin1().data());
    if(src.data)
        /*cv::imshow("tykgyu", src);//直接显示
        waitKey(0);*/
        displayMat(src);  //显示
}

图片类型转换和显示

cv::Mat转换QImage

void MyTest::displayMat(Mat image)
{
    Mat rgb;
    QImage img;
    cv::Size cvS;
    QSize qtS;
    qtS = ui.imagelabel->size();
    cvS.height = ui.imagelabel->height();
    cvS.width = ui.imagelabel->width();
    cv::resize(image, image,cvS );//图像按照label的大小进行显示
    if (image.channels() == 3)
    {
        //cvt Mat BGR 2 QImage RGB
        cvtColor(image, rgb, CV_BGR2RGB);
        img = QImage((const unsigned char*)(rgb.data),
            rgb.cols, rgb.rows,
            rgb.cols*rgb.channels(),
            QImage::Format_RGB888);
    }
    else
    {
        img = QImage((const unsigned char*)(image.data),
            image.cols, image.rows,
            image.cols*image.channels(),
            QImage::Format_RGB888);
    }
    ui.imagelabel->setPixmap(QPixmap::fromImage(img));//显示
}
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值