最近在了解qt opencv的一些用法,把常用的代码记下来方便需要时复制使用

在默认.pro文件加入opencv包含路径和库文件

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

CONFIG += c++17

# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

SOURCES += \
    main.cpp \
    mainwindow.cpp

HEADERS += \
    mainwindow.h

FORMS += \
    mainwindow.ui

# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

#opencv包含路径
INCLUDEPATH += G:\MinGW_Opencv\opencv4.10\include

#opencv库文件
LIBS += G:\MinGW_Opencv\opencv4.10\x64\mingw\lib\libopencv_world4100.dll.a

mainwindow.cpp 文件代码中加入 打开图片代码


#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <QFileDialog>

using namespace cv;
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}


//打开图片


void MainWindow::on_pushButton_clicked()
{
    QString imgPath = QFileDialog::getOpenFileName(this,"打开图片","C:/","打开图片(*.png *.jpg *.bmp)");

    Mat image  = imread(imgPath.toStdString());
    namedWindow("图片窗口",WINDOW_AUTOSIZE);
    imshow("显示图片",image);

}

void MainWindow::on_pushButton_clicked() 这个怎么来的?

点击按钮直接读取图片(没有选择对话框),并显示在窗口中

    Mat image = imread("d:\\2.jpg");

    // 检查图片是否成功读取
    if (image.empty())
    {
        std::cout << "Could not open or find the image" << std::endl;
        return;
    }

    // 显示图片(这里只是简单示例,实际在 Qt 中可能需要结合 Qt 的界面显示)
    imshow("Image", image);

    waitKey(0);

用对话框选择图片,并在窗口显示图片

    QString filename = QFileDialog::getOpenFileName(this, "打开图像文件", "C:/Users", "Image Files (*.bmp;*.png;*.jpg)");

    if (filename.isEmpty()) {
        QMessageBox::information(this, "提示", "文件打开失败1!");
        return;
    }
    cv::Mat img_input;
    img_input = cv::imread(filename.toLocal8Bit().toStdString());

    if (img_input.empty()) {

        QMessageBox::information(this, "提示", "文件打开失败2!");
        return;
    }
    cv::Mat temp;
    cv::cvtColor(img_input, temp, cv::COLOR_BGR2RGB);

    namedWindow("Display window",WINDOW_AUTOSIZE);
    imshow("Display window",img_input);
    waitKey(0);

    MainWindow w;
    w.show();

更多推荐