OpenCV網(wǎng)站上對(duì)windows只提供了VS的預(yù)編譯解壓包, 因此需要自己編譯OpenCV的源碼, 以在QT環(huán)境下使用. OpenCV的編譯對(duì)編譯器版本要求比較嚴(yán)格, 因此在編譯時(shí)繞了不少?gòu)澛? 浪費(fèi)了不少時(shí)間, 現(xiàn)在把所得經(jīng)驗(yàn)分享出來.本文末附編譯好的OpenCV3.0, 方便大家.
編譯環(huán)境:
OpenCV 3.0
QT5.3.2 with MinGW4.8.2(32bit)
CMake2.8.8
Windows7 32bit
注: opencv3.1及以上不再支持32位. 本文編譯流程在Win8及更高版本W(wǎng)indows下均有兼容性問題. 但編譯好的OpenCV可以在更高版本W(wǎng)indows上完美使用. 本文截圖在Win10上完成.
編譯步驟:
1.1 安裝CMake2.8.8, 安裝QT5.3.2并確認(rèn)MinGW版本, 下載并安裝OpenCV WinPack
1.2 將QT下的相應(yīng)目錄添加進(jìn)Path變量

2.1 打開CMake后勾選Grouped, Advanced, 并選擇安裝的OpenCV源代碼目錄和編譯生成目錄.

2.2 點(diǎn)擊Configure, 出現(xiàn)下圖對(duì)話框. 選擇MinGW Makefiles, 選中Specify native compilers

2.3 繼續(xù)下一步, 彈出如下對(duì)話框, 選擇編譯器, C編譯器選擇QT安裝目錄下的.\Tools\mingw530_32\bin\gcc.exe. C++編譯器選擇QT安裝目錄下的.\Tools\mingw530_32\bin\g++.exe, 繼續(xù)下一步.

2.4 點(diǎn)擊Finish, 等待預(yù)編譯完成. 過程中可能會(huì)報(bào)錯(cuò) Error in configuration process, project files may be invalid. 忽略即可.
3.1 展開WITH列表, 將WITH_IPP去除勾選, 勾選WITH_QT和WITH_OPENGL


3.2 點(diǎn)擊Generate, 等待編譯完成
4.0 打開OpenCV源文件文件夾中CMake目錄下的Opencvcompileroptions.cmake文件
搜索找到add_extra_compiler_option(-Werror=non-virtual-dtor), 在該行前面加上#號(hào)注釋掉這一行. 在OpenCV3.0版本下該行為67行.

5.1 打開命令行管理器進(jìn)入生成文件夾, 執(zhí)行
mingw32-make5.2 執(zhí)行完成后繼續(xù)輸入
mingw32-make install等待進(jìn)度完成之后, 編譯工作便完成了
我們將目標(biāo)文件夾中的install\include文件夾和bin及l(fā)ib文件夾復(fù)制出來, 這些便是以后進(jìn)行OpenCV開發(fā)所需要的文件.此處我將文件復(fù)制到了一個(gè)命名為FilesNeededByOpenCV的文件夾中, 將此文件夾中的bin文件夾添加到系統(tǒng)Path變量中.

可將此文件夾打包, 用于其他版本W(wǎng)indows環(huán)境下的開發(fā).

如果一切順利, 則配置完成.
測(cè)試:
新建一個(gè)QT項(xiàng)目, 在pro文件中加入
INCLUDEPATH += "C:\FilesNeededByOpenCV\include\opencv" INCLUDEPATH += "C:\FilesNeededByOpenCV\include\opencv2" INCLUDEPATH += "C:\FilesNeededByOpenCV\include" LIBS += "C:\FilesNeededByOpenCV\lib\libopencv_*.a"
其中文件路徑替換為你上步操作實(shí)際選擇的文件夾
#include <opencv2/opencv.hpp> using namespace cv; int main(){ Mat srcImage = imread("1.jpg"); imshow("IMAGE", srcImage); waitKey(0); }

運(yùn)行成功!
最后:
附上打包的預(yù)編譯文件
https://drive.google.com/open?id=0B7VyGeuv2EoGUmJuSUxPMVB6Z2s