Ubuntu+qt+opencv加载本地图片并显示

效果图:


按键事件函数

void MainWindow::on_manualButton_clicked()
{
    QString fileName = QFileDialog::getOpenFileName(this,tr("Open Image"),
                                    ".",tr("Image Files (*.png *.jpg *.bmp)"));
    qDebug()<<"filenames:"<<fileName;
    image = cv::imread(fileName.toStdString());
    if(!image.data)
    {
        QMessageBox msgBox;
        msgBox.setText(tr("图片为空!"));
        msgBox.exec();
    }
    else
    {
        displayMat(image); //显示图片
    }
}
void MainWindow::displayMat(Mat image)
{
    Mat rgb;
    if(image.channels()==3)
    {
        //cvt Mat BGR to 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->cameraDisplayLabel->clear();
    ui->cameraDisplayLabel->setPixmap(QPixmap::fromImage(img));
    ui->cameraDisplayLabel->setFixedSize(200,200);//设置label控件大小
    ui->cameraDisplayLabel->setScaledContents(true);//缩放图片适应大小
}

猜你喜欢

转载自blog.csdn.net/qq_30483585/article/details/80307527
今日推荐