1. 程式人生 > >Qt5 + opencv3.4 + window 環境搭建 筆記

Qt5 + opencv3.4 + window 環境搭建 筆記

qt的編譯常用的有mingw 和 msvc編譯器 。對於mingw 的編譯需要用cmake 重新編譯原始碼 ,操作其實是比較簡單的,本人在編譯過程中出錯,暫時先不用mingw ,後續再研究補充  

qt5.9.4 + opencv 3.4 
一. 安裝下載:

所用版本 

Windows 7 64位

OpenCV 3.4.0 https://opencv.org/opencv-3-4.html

QT 5.9.4 x64 https://mirrors.ustc.edu.cn/qtproject/archive/qt/5.9.4/5.9.4/

MSVC 2015 

二 解壓opencv 

opencv 下載的是 opencv-3.4.0-vc14_vc15.exe  執行解壓得到opencv資料夾主要包括 build 和sources 兩個資料夾 。其中build 是適用於vc14和vc15 版本的 如果有其他的vs 可以用cmake 生成對於的vs 工程.

 注:opencv 的build 可以放在自己認為合適的地方,本人放在了d盤


三. 配置環境變數 

    我的電腦 -》右鍵屬性-》高階系統設定-》環境變數  -》系統變數-》Path

新增

D:\opencv\build\x86\vc14\lib\

D:\opencv\build\x86\vc14\bin

D:\opencv\build\include\opencv

D:\opencv\build\include\opencv2

qt 設定如上,新增

D:\Qt\Qt5.9.4\5.9.4\msvc2015_64\bin

D:\Qt\Qt5.9.4\Tools\mingw530_32\bin 


 注:一般添加了環境變數,使之生效可以通過cmd 指令,如果不熟,可以直接關機重啟,還有一種臨時設定環境變數的方法,在window cmd 下

set PATH=%PATH%;D:\Qt\Qt5.9.4\Tools\mingw530_32\bin
四.  重啟以後 新建qt工程的.pro 中匯入opencv 庫 ,有兩種方法,自動和手動。

    手動新增 :


    自動新增:

1.  右鍵工程新增 庫

        

    2. 選擇lib 路徑

        

    3.最終自動新增的如下圖

        

五.  寫個測試程式  編譯 執行#include "mainwindow.h"

將字串轉換為 int 型別

#include "ui_mainwindow.h"
#include "opencv2/opencv.hpp"
using namespace cv;
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
this->resize(800, 600);
cv::Mat image = cv::imread("C:/Users/oada/Desktop/images/poweroff.png", 1);
cv::namedWindow("my image");
cv::imshow("my image", image);
}

    執行結果:

        

opencv 3.4  + vs 2015  + qt tools 

上面配置了qt 下 opencv的使用,下面簡單總結一下 vs 下 qt + opencv 的配置 

一. 其中vs + qt 配置簡單講一下  

1. vs -》工具-》擴充套件與更新-》-》聯機  搜尋qt  第一個安裝即可 如下圖


2. 重啟vs 在工具欄就多了一個Qt VS Tools  選擇qt options 設定qt的安裝路徑,就可以讓vs 自動載入qt的lib 和標頭檔案等了。

二. vs 新建一個qt 工程,然後開啟工程屬性,新增依賴和標頭檔案等,具體如下圖:


包含目錄如下


新增連結器輸入


手動換行輸入 下面紅框的兩行


測試函式如下 

#include "stdafx.h"
#include "cvtest.h"
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
cvtest::cvtest(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
cv::Mat image = cv::imread("C://Users//oada//Desktop//images//poweroff.png", 1);
cv::namedWindow("my image");
cv::imshow("my image", image);
}

編譯測試通過 。