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顯示圖片只顯示部分(或認爲圖片太大)

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