前言

紀錄如何用Qt建置OpenCV 3.0,因為有用到CMake,步驟較複雜,特地詳細記錄一下

步驟

下載Qt

Qt官網下載
OpenSource → Get started → View All Downloads

下載 Qt for Windows 32bit VS2013

不載64bit的原因是之後cmake會出一點問題
不知道為什麼,但32bit可以用

因為目前Qt支援的Visual Studio compiler只到2013
所以要先有VS2013在電腦裡面才可以,2015他不吃 (超討厭)

如果你已經裝VS2015了,要嘛就是把2015清乾淨改裝2013
不然就是再裝一個VS2013……

我用的是Qt 5.5.0版本

編譯OpenCV

用cmake3.3.1 編譯OpenCV3.0:

  • Configure → generator選擇VS 2013 → Use Default
  • Configure完後要多勾選WITH_QT

Step image

檢查一下後面對應到的path是否正確
如果沒出現,就自己手動連到對的位置就好了

再Configure一次,紅色的都不見了,就按Generate

  • 接著到mybuild資料夾內,找到這個OpenCV.sln這個檔案

用VS打開這個檔案,因為檔案很多,沒意外會開得有點久
QtCmake1

全部開完後,在右側的Solution往下拉到最底,有一個ALL_BUILD
點選ALL_BUILD,選擇Win32,開始建置
QtCmake2
過程中可能會有一些Warning,可以忽略

測試

VS2013

建立VC++ Win32主控台專案結束後,隨便側一份有用到OpenCV的cpp檔案

做的事情跟直接連接opencv一樣,修改屬性,但path會有些不同

VC++ include path

  • 一樣連結到opencv的build裡面的include

VC++ library path

  • 改成連結到mybuild裡面的lib,裡面還有一個Debug,總之就是連結到放一堆lib的那個資料夾

Linker input

  • Additional Dependencies
  • 把mybuild\lib\Debug內的d.lib結尾的檔案名字copy paste
  • OpenCV 3.0 Cmake完後的lib list如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
opencv_calib3d300d.lib
opencv_core300d.lib
opencv_features2d300d.lib
opencv_flann300d.lib
opencv_hal300d.lib
opencv_highgui300d.lib
opencv_imgcodecs300d.lib
opencv_imgproc300d.lib
opencv_ml300d.lib
opencv_objdetect300d.lib
opencv_photo300d.lib
opencv_shape300d.lib
opencv_stitching300d.lib
opencv_superres300d.lib
opencv_ts300d.lib
opencv_video300d.lib
opencv_videoio300d.lib
opencv_videostab300d.lib

Build專案時記得要選Win32 compiler , 因為cmake的時候選的是VS2013 32bit 不是64bit

環境變數
: 把原本連結到opencv bin的環境變數砍掉
: 改成連到mybuild\bin\Debug
可以用cmd check,打開cmd鍵入path即可

QtCmake3{:class=”img-responsive”}

改完後重開機(若你是Windows10不需要重開)

Qt

測試Qt編譯有OpenCV的cpp

  1. New Project → Non Qt → C++
    QtCmake4
    QtCmake5
  2. Release勾勾取消,Debug位置後面一串default可以砍掉,擺在同一份資料夾就好
    QtCmake6
  3. 打開.pro檔
    QtCmake7
  4. 加入 INCLUDE_PATHLIBS,Library位置就是mybuild內放lib的地方,記得前面要加 -l 且lib檔後面不需要.lib
    QtCmake8
  5. 打開main.cpp,貼入隨便一份用到OpenCV的cpp檔案測試
    QtCmake9
    QtCmake10

Qt widget + OpenCV3.0

用Qt寫C++介面

  1. New Project → Application → Qt Widgets
    QtCmake11
    QtCmake12

  2. 把Release取消,Debug位置後面一長串拿掉
    QtCmake13

  3. 打開.pro檔,加入 INCLUDE_PATHLIBS
    QtCmake14

  4. 打開mainwindow.cpp,加入一些基本的opencv語法
    QtCmake15

  5. 執行檔案
    QtCmake16