Qt5.9.0配置opencv4.1.1过程记录

正确完整配置过程可直接参照[4],如途中有报错,可参考是否遇到以下问题并解决。

 

本来是按照[1]来配置的,但是当初在装Qt时只装了MinGW没装MSVC,所以按照[5]来添加组件:

在经过漫长的等待之后,发现添加列表里依然没有想要的组件,于是只好卸载重装。

重装完后,按照[1]的操作,在.pro中添加:

INCLUDEPATH += $$quote(D:/program files/ProFile/DeepLearning/opencv/opencv/build/include)

CONFIG(debug, debug|release): {
LIBS += -L$$quote(D:/program files/ProFile/DeepLearning/opencv/opencv/build/x64/vc15/lib) \
-lopencv_core411d \
-lopencv_imgproc411d \
-lopencv_highgui411d \
-lopencv_ml411d \
-lopencv_video411d \
-lopencv_features2d411d \
-lopencv_calib3d411d \
-lopencv_objdetect411d \
-lopencv_contrib411d \
-lopencv_legacy411d \
-lopencv_flann411d
} else:CONFIG(release, debug|release): {
LIBS += -L$$quote(D:/program files/ProFile/DeepLearning/opencv/opencv/build/x64/vc15/lib) \
-lopencv_core411 \
-lopencv_imgproc411 \
-lopencv_highgui411 \
-lopencv_ml411 \
-lopencv_video411 \
-lopencv_features2d411 \
-lopencv_calib3d411 \
-lopencv_objdetect411 \
-lopencv_contrib411 \
-lopencv_legacy411 \
-lopencv_flann411
}

其中 $$quote() 是因为路径有空格,411是因为opencv是4.1.1版本。

然后出现了[3]的问题,在 main.cpp 中添加头文件得到解决:

#include <opencv2/highgui/highgui_c.h>

接下来又出错,-lopencv_core411d \ 找不到啊之类的,无法解决。

 

然后尝试了[2]的方法,在cmake的时候,出现了下面的错误:

用 Direct修复工具 修复,dll文件没有问题,但是c++ 2015更新失败:

之后在opencv的安装目录下发现是有libwinpthread.dll的,把它复制到了 C:\Windows\System32 ,依然有错误。

最后重启了电脑,结果直接QQ和Qt都无法启动了:

再次运行 Direct修复工具,还是没有解决,依然有上述问题。

在贴吧[6]找到了方法,先把c++2015卸载:

然后再运行 Direct修复工具,虽然依然没有成功更新,但是QQ和Qt都能打开了,执行qmake也没有报错。

 

思考了一下,觉得[1]是opencv2.x.x,[2]是opencv3.x.x,而我是4.1.1,于是查看了[4]

没有按照[4]写的去执行cmake了,因为我的opencv下其实有build文件夹,而且Windows SDK好像原本也是已经安装了的。之前安装的VS是VS2015版的。

于是在Qt创建新的项目,在创建页面只勾选MSVC2015那一项,在.pro文件最后添加如下代码:

INCLUDEPATH += $$quote(D:/program files/ProFile/DeepLearning/opencv/opencv/build/include)

CONFIG(debug, debug|release): {
LIBS += -L$$quote(D:/program files/ProFile/DeepLearning/opencv/opencv/build/x64/vc15/lib) \
        opencv_world411d.lib
} else:CONFIG(release, debug|release): {

LIBS += -L$$quote(D:/program files/ProFile/DeepLearning/opencv/opencv/build/x64/vc15/lib) \
        opencv_world411.lib
}

在 main.cpp 中添加下述代码:

#include <opencv2/opencv.hpp>

using namespace std;
using namespace cv;

int main(int argc, char *argv[])
{
    Mat image = imread("C:/Users/lakuite/Desktop/test.png");
    imshow("window",image);
}

即下图所示:

[4]中所说的编译器实际上没有修改,直接右键该项目构建qmake,然后编译运行,显示出了图像。

虽然可能是图像本身的原因,和用python的cv2显示的一样,显示框都非常大而且是个局部图。

根据[7],在 imshow("window", image); 前加 namedWindow("window", 0); 得到解决:

或者直接imwrite(save_path, image); 直接保存下来。

 

 

参考文档

[1] OpenCV与Qt的环境搭建及Demo

[2] Qt+opencv亲自配置教程

[3] 未定义标识符"CV_WINDOW_NORMAL"

[4] qt5.13配置opencv4.2环境 mscv版

[5] qt 安装好后更新添加组件

[6] DirectX修复工具c++组件部分修复失败

[7] opencv显示图片只显示部分(或认为图片太大)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章