在Qt 5.7 下配置OpenCV 開發環境

什麼是Qt和Opencv

什麼?你說你要用MFC?其實之前我一直也是用MFC的,但是有一天我終於##受夠了##MFC匪夷所思的命名規則,還有略顯雜亂無章的設計…爲什麼不試試跨平臺,酷炫,還真的OOP的Qt呢.

另一方面,Opencv包含了大量的計算機視覺算法.是一個國際上公認的優秀的算法庫.我們很多日常開發如果不是特殊用途或者精度要求特別高的話,我們都會考慮使用Opencv來作爲我們開發的算法支持,而不是自己去實現需要使用的算法.

雖然Opencv在算法方面做得很好,它也有自帶的gui庫-> highgui,但印象中從Opencv 1.0開始,到現在目前最新的Opencv 3.1 這個gui庫都沒有什麼改變,依舊是那麼的缺乏交互,如果用這個gui來做東西的話,DEMO級別的東西可以直接用它來做,畢竟短平快…但是如果要做真正的項目的話,Opencv自帶的highgui還是難登大雅之堂.

    後文看到這種格式的語句都可以略去不看,不影響操作

開始之前

好了,言歸正傳,今天的主要內容還是告訴大家如何配置Qt+Opencv協同工作.
在正式開始之前我們需要下載的軟件如下:

1.Visual Studio 2015 Community
2.微軟的WDK工具
3 .Qt 5.7.0 for Windows 64-bit (VS 2015, 918 MB) 官網鏈接::https://www.qt.io/download-open-source/
4.Opencv-3.1.0


請務必按照VS2015->WDK->QT->Opencv的順序進行安裝,否則安裝將會出錯.

飯要一口一口吃,環境要一個一個裝..不聽Yaokun言,吃虧在眼前.

開始

1.安裝vs2015

這一步開始之前請確認你的C:\有10G以上空間.之前我安裝的時候雖然是選擇了在D:\安裝但是最後觀察來看D:\基本上沒有佔用多少空間,倒是C:\被佔用了大概8Gb左右的空間,知道爲什麼的朋友可以留言和我交流一下.

不知道怎麼安裝VS2015的朋友請看這裏
VS2015版本默認不安裝VC++編譯器,請務必手動選擇安裝之

2.安裝WDK

WDK是Windows 驅動程序工具包 的簡稱.由於我們這裏使用的是Qt,而且是msvc版本的Qt creator.就要使用vs2015的complier,但是vs的debugger是內嵌在vs軟件裏的,從外部是不能調用的,所以我們需要下載WDK來替代gdb,除非你告訴我你能寫出沒有bug的程序,不需要debugger..

    看到這裏有的朋友可能會疑問,爲什麼不直接用MingW版本的Qt呢?還要裝一個臃腫的VS...因爲Opencv目前的預編譯版本只有vs系列的,最新的3.1版本增加了VC14,也就是給出了一個vs2015的預編譯版本.而沒有MingW對應的編譯好的文件,所以你只能自己去編譯一遍Opencv給Qt+MingW用.如果有時間在下篇文章會講這個辦法,所以今天我們就先將就一下,用VS系的工具啦.

到剛剛我給出的鏈接那去下載WDK

WDK下載

然後blabla安裝好了…然後進行下一步.

3.安裝Qt

也是一路確定blabla…
安裝好之後如果正常你將會看到Qt Creator 自動檢測到你之前安裝了VS2015

qt安裝好之後

如果沒有,請確認你安裝的qt版本是mingw還是msvc的.

安裝Opencv

解壓縮到你的目錄 注意:強烈建議不要使用中文目錄

opencv安裝

然後進入到opencv->build->x64你會發現有兩個文件夾,分別是vc12和vc14,分別對應vs2013,vs2015兩個版本.這也是Opencv3.1新更新的內容之一,如果你是用Opencv3.0+vs2015意味着你只能選擇vc12編譯版本的,會提示你找不到msvcr120d.dll.這個就比較不開心了.

vc14

好,做到這裏已經完成了一大半了,接下來我們配置一下工程來看我們搭建的環境work不work.

配置環境

環境變量的配置

在系統環境變量中找到Path一欄,加入下面兩個:

環境變量

我這裏使用了一個工具來看環境變量,大家嫌麻煩可以直接拷貝出來用sublime或者記事本之類來編輯,反正只要能分行,看着方便就行…

建立Qt工程

我們就簡單點,建立個Widgets工程吧

qt工程

最重要的是修改pro文件,這裏的pro文件就是工程的屬性配置,經過qmake之後會生成make文件.實在是比VS系列慢慢點鼠標地弄配置表方便多了.

學習一下pro文件的寫法或者你直接去學習cmake的寫法還是很有意義的.但是這裏看不懂也沒關係,直接在你自動生成的pro文件里加上這兩段就行

INCLUDEPATH += D:\opencv\opencv3\build\include\opencv2 \
               D:\opencv\opencv3\build\include\opencv  \
               D:\opencv\opencv3\build\include

LIBS +=  D:\opencv\opencv3\build\x64\vc14\lib\opencv_world310d.lib \

只要把引用目錄和庫加上就可以了.

直接上我的全部pro文件吧

#-------------------------------------------------
#
# Project created by QtCreator 2016-09-14T01:04:09
#
#-------------------------------------------------

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = opencvTest3
TEMPLATE = app

INCLUDEPATH += D:\opencv\opencv3\build\include\opencv2 \
               D:\opencv\opencv3\build\include\opencv  \
               D:\opencv\opencv3\build\include

LIBS +=  D:\opencv\opencv3\build\x64\vc14\lib\opencv_world310d.lib \



SOURCES += main.cpp\
        mainwindow.cpp

HEADERS  += mainwindow.h

FORMS    += mainwindow.ui

之後就會發現Qt已經找到Opencv的文件了,開始代碼提示了.
include

這裏做了一個小例子,在窗口中設置了一個按鈕,按鈕通過Qt的信號槽連接到槽函數(有點類似鉤子函數)中在槽函數中打開資源管理器,讓你選一張圖片,然後調用opencv的canny算子來做邊緣檢測,並最後把變換前後的圖像都顯示出來.
效果如下:
效果
這裏由於時間原因還是用了opencv自己的gui.等有空了改成用qt的gui來顯示,更能說明問題!

最後,有什麼不清楚的地方還請留言,我會及時補充!
謝謝

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