[구성 필요 없음] Qt의 mingw는 컴파일된 opencv 라이브러리를 사용합니다.

[구성 필요 없음] Qt의 mingw_32/64는 컴파일된 opencv 라이브러리를 사용합니다.

mingw 컴파일러를 사용하여 Qt 온라인에서 opencv를 구성할 때 일반적으로 cmake 컴파일 도구를 사용하여 사전 컴파일해야 합니다. 단계는 상대적으로 번거롭습니다. 권장되는 단축키는 다음과 같습니다. 그리기를 피하기 위해 이전 사람들이 컴파일한 opencv 라이브러리를 사용하면 됩니다. 시간은 바퀴를 만듭니다.

사례 프로젝트 파일 창고

4.0.1을 테스트했는데, Qt에서는 debug와 release를 사용하여 프로그램을 실행할 수 있지만, 4.5.2에서는 release만 사용하여 프로그램을 실행할 수 있습니다.

1단계: 해당 컴파일된 opencv 라이브러리 파일
웨어하우스 주소 https://gitcode.net/mirrors/huihut/opencv-mingw-build 를 다운로드
여기에 이미지 설명을 삽입하세요.
하고 다운로드한 압축 패키지를 Qt 설치 디렉터리와 동일한 수준의 디렉터리에 압축을 풉니다.:
여기에 이미지 설명을 삽입하세요.
여기에 이미지 설명을 삽입하세요.
2단계 : 시스템 환경 변수 추가
참고: 환경 변수를 추가할 때 컴퓨터에 여러 버전의 opencv 라이브러리가 있는 경우 이 버전의 opencv를 다른 opencv 버전 앞에 배치해야 합니다. 환경 변수를 구성한 후 컴퓨터를 다시 시작할 수 있습니다
여기에 이미지 설명을 삽입하세요.
여기에 이미지 설명을 삽입하세요.
. 한 번.

3단계: Qt 테스트 프로젝트 추가
여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.
참고: 여기의 경로는 압축된 패키지의 압축을 풀기 위한 경로 및 환경 변수의 경로와 동일해야 합니다.

INCLUDEPATH += E:/Qt/OpenCV-MinGW-Build-OpenCV-4.0.1-x64/include
               E:/Qt/OpenCV-MinGW-Build-OpenCV-4.0.1-x64/include/opencv2
LIBS +=  E:/Qt/OpenCV-MinGW-Build-OpenCV-4.0.1-x64/x64/mingw/lib/lib*.a

프로젝트에 필요한
widget.h 파일의 구성은 다음과 같습니다.
여기에 이미지 설명을 삽입하세요.

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QFileDialog>
#include <QMessageBox>
#include <opencv2/opencv.hpp>
using namespace cv;

QT_BEGIN_NAMESPACE
namespace Ui {
    
     class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    
    
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
    Mat img_input; //原始图片
    Mat gray_img; //灰度图片
    int isGray = 0; //判断是否设置为灰度图

private slots:
    void on_pushButton_clicked();

    void on_checkBox_clicked();

private:
    Ui::Widget *ui;
};
#endif // WIDGET_H


widget.c 파일에서
여기에 이미지 설명을 삽입하세요.

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    
    
    ui->setupUi(this);
}

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


void Widget::on_pushButton_clicked()
{
    
    
    QString filename=QFileDialog::getOpenFileName(this,"打开图像文件","Image File(*.bmp;*.png;*.jpg)");
       if(filename == "")
       {
    
    
           QMessageBox::information(this,"提示","文件打开失败!");
           return;
       }
       img_input = cv::imread(cv::String(filename.toLocal8Bit().toStdString()));
       if(img_input.empty())
       {
    
    
           QMessageBox::information(this,"提示","文件打开失败!");
           return;
       }
       cvtColor(img_input, gray_img, COLOR_BGR2GRAY);

       Mat temp;
       QImage qImg;

       if (!isGray)
       {
    
    
           cv::cvtColor(img_input,temp,COLOR_BGR2RGB);
           qImg = QImage((const unsigned char*)(temp.data), temp.cols, temp.rows, temp.step, QImage::Format_RGB888);
       }
       else
       {
    
    
           cvtColor(gray_img, temp, COLOR_GRAY2RGB);//GRAY convert to RGB
           qImg = QImage((const unsigned char*)(temp.data), temp.cols, temp.rows, temp.step, QImage::Format_RGB888);
       }
       ui->label->setPixmap(QPixmap::fromImage(qImg));
       ui->label->setScaledContents(true);

}

void Widget::on_checkBox_clicked()
{
    
    
    if (ui->checkBox->isChecked())
        {
    
    
            isGray = 1;
        }
        else
        {
    
    
            isGray = 0;
        }
}


프로그램을 실행하고 pushButton 버튼을 클릭한 후 아래와 같이 테스트 이미지를 추가하면 opencv 라이브러리가 성공적으로 설치되었음을 나타냅니다.
회색조 이미지를 사용하지 않을 때의 효과는 다음과 같습니다.
여기에 이미지 설명을 삽입하세요.
회색조 이미지를 사용하여 로드합니다.
여기에 이미지 설명을 삽입하세요.

추천

출처blog.csdn.net/weixin_44236302/article/details/131126895