opencv-2-VS2017與QT顯示圖像


opencv-2-VS2017與QT顯示圖像

目的

  1. 使用 VS 構建第一個 opencv 程序
  2. 使用 QT 構建 第一個 opencv 程序
  3. VS 導入 QT 程序

開始

我們需要設置 dll 文件的運行路徑, 避免運行的時候找不到相應的庫而報錯,
接下來, 我們需要使用

設置運行環境

我們整理得到了, 我們需要將 我們的dll 文件夾 加入到系統 的Path 路徑
過程如下: 此電腦--右鍵--屬性--高級系統設置--環境變量--系統變量--Path--編輯--新建

然后填入我們 dll 所在的文件夾即可

path 設置過程
path 設置過程

path 設置
path 設置

VS2017使用 opencv 程序

opencv 的官方給出了一個 windows Visual Studio 使用 opencv 的方法[1],
其實都差不多, 在 博客 Win10, VS2017環境下OpenCV3.4.2的配置 也是使用 包含目錄, 庫目錄, 以及附加依賴項進行的展示過程,

在后面執行之前, 的opencv 的目錄結構是存在 D:\Project\Vision\ImageLab\Depend\opencv目錄下面的, 我們在前面介紹了每個文件夾里面的內容

  1. opencv430 
  2. - dll 
  3. - lib 
  4. - include 

新建工程

新建空的VS 項目, imagelab 在解決方案上右鍵, 點擊屬性進行配置即可

配置屬性
配置屬性

包含目錄與庫目錄

添加你的 include 文件夾和 lib 文件夾即可

包含目錄與庫目錄
包含目錄與庫目錄

這里使用的是我的 絕對路徑, 如果使用, 必須更改為你自己的路徑, 不然 肯定出錯.

庫文件

此處選擇的是相應的 opencv_world430d.lib, opencv 在3.0 的版本之后, 只需要加入一個 world 的lib 文件即可, 不需要添加一系列的庫文件, 也可以單獨編譯得到 值添加單個的庫,

附加依賴庫文件
附加依賴庫文件

這里建議去看 Win10, VS2017環境下OpenCV3.4.2的配置 這篇博文, 寫的十分詳細,

編寫程序

  1. #include <iostream> 
  2.  
  3. // 引入 opencv 函數頭文件 
  4. #include <opencv2/opencv.hpp> 
  5.  
  6. int main() 
  7. { 
  8. // 設置 要顯示的圖像路徑 
  9. std::string test_pic = "D:\\Project\\Vision\\ImageLab\\TestImages\\lena.png"; 
  10.  
  11. // 讀取圖像 
  12. cv::Mat lena_img = cv::imread(test_pic); 
  13.  
  14. // 顯示圖像 
  15. cv::imshow("圖像顯示窗口", lena_img); 
  16. cv::waitKey(0); 
  17.  
  18. return 0; 
  19. } 

調試運行

如果配置沒有問題, 注意上面配置 的都是 debug x64, 在編輯頁面也要是 一樣的嗎不能出錯, 不然編輯的不對, 點擊 生成--生成解決方案 如果程序復制過去的沒有問題, 就不會有問題了,

此處我默認看這里的人有了一定的 C++ 程序基礎, 不然解釋太多的話就很麻煩,

編輯頁面配置
編輯頁面配置

點擊綠色的 本地 windows 調試器 直接運行 就能看到這個窗口了

opencv lena 圖片
opencv lena 圖片

到這里, 我們的 VS 使用 opencv 就完成了 , 很容易就搞定了..

QT 使用 opencv 程序

QT 使用 opencv 更加簡單, QT的主要工程文件是 *.pro 文件, 我們可以在文件中加入一些配置信息 便於我們執行 可以參考Windows下QT Creator配置OpenCV(VC版)

新建工程

新建工程 imagelab , 在工程上右鍵, 添加庫
添加庫

添加外部庫, 點擊選擇到 lib 文件, 會自動選擇 include
文件夾, 檢查一下是否包含正確,

外部庫
外部庫

最終會在 *.pro文件中 添加

win32:CONFIG(release, debug|release): LIBS += -L$$PWD/Depend/opencv/lib/ -lopencv_world430
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/Depend/opencv/lib/ -lopencv_world430d

INCLUDEPATH += $$PWD/Depend/opencv/include
DEPENDPATH += $$PWD/Depend/opencv/include

我們 imagelab.pro 工程在 D:\Project\Vision\ImageLab 文件夾下, 對應的庫 D:\Project\Vision\ImageLab\Depend\opencv\lib 文件夾下面, 所以, 這里 $$PWD 是 QT pro 文件的語法, 能夠獲取到 pro文件所在的目錄, 也就是工程的當前目錄,

qmake 和構建
qmake 和構建

QT 工程 需要首先執行 qmake 生成 編譯文件,

編寫代碼

QT 就是 標准的C++, 只不過 QT 是一套 C++庫, 我們能夠很容易的使用 界面庫, 生成帶有界面的程序..

  1.  
  2. #include "mainwindow.h" 
  3. #include <QApplication> 
  4.  
  5. // 引入 opencv 函數頭文件 
  6. #include <opencv2/opencv.hpp> 
  7.  
  8. int main(int argc, char *argv[]) 
  9. { 
  10. QApplication a(argc, argv); 
  11. MainWindow w; 
  12. w.show(); 
  13.  
  14. // 設置 要顯示的圖像路徑 
  15. std::string test_pic = "D:\\Project\\Vision\\ImageLab\\TestImages\\lena.png"; 
  16.  
  17. // 讀取圖像 
  18. cv::Mat lena_img = cv::imread(test_pic); 
  19.  
  20. // 顯示圖像 
  21. cv::imshow("圖像顯示窗口", lena_img); 
  22. cv::waitKey(0); 
  23.  
  24. return a.exec(); 
  25. } 
  26.  

調試運行

點擊構建, 最后點擊運行, 如果一切順利, 我們就能看到這幅圖像了, 這里圖像顯示還是 opencv 的窗口, 我們后續會將其顯示在opencv 的窗口上,

QT opencv 程序
QT opencv 程序

VS 導入 QT 工程

VS 有一個很好用的插件, 叫做 Qt Visual Studio Tools, 可以下載安裝,或者在 VS 工具--拓展與更新--聯機--搜索 進行安裝, 安裝之后需要重啟 VS

VS 開發 opencv 的程序 必備插件 Image Watch, 可以在調試過程中查看 內存中的 opencv Mat 數據. 強烈推薦..

點擊 設置 QT option 然后添加, 直到我們點擊到 QT安裝目錄下面 的 具體編譯器文件夾,
F:\Fxxk\QT\Qt5.14.2\5.14.2\msvc2017_64

QT設置
QT設置

我們使用 QT 插件導入 *.pro 文件, 會生成相應的工程,

跟我們直接 VS與 opencv 的工程設置不同, QT 自動生成的文件沒有更改 包含目錄和庫文件
VC++ 目錄

而是選擇了在 附加包含目錄里面增加了, 不僅增加了 opencv 的目錄, 而且包含了 QT 的很多庫目錄,

附加包含目錄
附加包含目錄

對應的 , 我們仍然使用 附加依賴項 設置 輸入 lib 文件

附加依賴項
附加依賴項

這樣, 我們就能使用 VS 編譯得到 QT 的程序, 編譯成功, 運行即可再次看到 lena 圖像

VS 調試 QT 程序
VS 調試 QT 程序

其他

我們后續的開發主要是 QT 進行開發, 用於生成自定義的界面, 便於我們開發過程中的圖像展示工作.


  1. 《OpenCV: How to build applications with OpenCV inside the 〈Microsoft Visual Studio〉》. 見於 2020年4月20日. https://docs.opencv.org/4.3.0/dd/d6e/tutorial_windows_visual_studio_opencv.html.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM