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

来源:互联网 发布:晚上醒了就睡不着 知乎 编辑:程序博客网 时间:2024/05/22 14:32

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));//显示}
0 0
原创粉丝点击