1. 程式人生 > >Qt下OpenCV編譯配置(Cmake3.6.0+Mingw4.4+opencv2.4.9)c

Qt下OpenCV編譯配置(Cmake3.6.0+Mingw4.4+opencv2.4.9)c

在此之前我用的mingw gcc4.4.0+Cmake3.6.0+OpenCV2.4.10進行編譯的,那次報錯了,沒成功,然後拖了好多天,今天重新試驗了一次,這次用的OpenCV2.4.9,莫名其妙的就編譯通過了,很神奇。

原因具體還不清楚,查了一些相關的部落格,有的說在Qt高版本下編譯通過了,比如Qt5.0.2,我猜想可能和MinGW版本有關,因為高版本的qt帶的mingw版本也較高,比如Qt5.0.2帶的mingw版本為mingw4.7。

首先編譯前要安裝好所有工具:

1)mingw 4.4.0,我是之前配置qt的時候就裝好了,我的qt版本是4.8.5的

2)OpenCV2.4.9 下載安裝好

3)cmake3.6.0 

(最好把Mingw和cmake的bin加在環境變數path中,也許自動會加進去,可以手動檢查下)

然後開啟Cmake,選好原始碼source code路徑和build目標路徑

點選configure的時候會提醒讓你選擇generator,我猜這意思是編譯器吧,不知道怎麼翻譯


然後選好再點configure


成功的話會出現圈的done說明,並且列表中一片紅

這時候去勾選生成列表中的WITH_OPENGL和WITH_QT兩項

然後再configure後紅色會消失,然後點一下generate就會出現下面的generating done。

(具體為什麼這麼做我也懵逼)


這些步驟走完會在目標資料夾下MakeFile

檔案,可以自己去檢視一下,這就可以用mingw編譯了

然後準備在命令列下編譯(我用了差不多40分鐘,挺慢的,ps:可見有個高配置電腦的重要性)


然後執行mingw32-make install,這一步較快,兩分鐘左右


------------------------------------分割線------------------------------------------------------------------------------------------

然後是配置Qt開發環境拷貝下面三個資料夾放進之前建的

D:\development_tools\opencv249\opencv_mingw_build 資料夾中
1)D:\development_tools\opencv249\opencv\build\include,這裡面有opencv和opencv2兩個資料夾,由於
opencv_mingw_build下也有include檔案,我就把opencv和opencv2兩個資料夾拷貝到了它原來的資料夾裡,保留了裡面的檔案
2)CMake目標路徑下,MinGW編譯後的bin目錄,D:\development_tools\opencv249\opencv_mingw_build\bin

3)3)CMake目標路徑下,MinGW編譯後的lib目錄,D:\development_tools\opencv249\opencv_mingw_build\lib

MinGW編譯後的bin目錄,D:\development_tools\opencv249\opencv_mingw_build\bin目錄新增到系統環境變數

然後是建立Qt工程,新建Qt控制檯應用程式

在工程下的Pro檔案中新增:

INCLUDEPATH+=D:\development_tools\opencv249\opencv_mingw_build\include\opencv\
D:\development_tools\opencv249\opencv_mingw_build\include\opencv2\
D:\development_tools\opencv249\opencv_mingw_build\include


LIBS += D:\development_tools\opencv249\opencv_mingw_build\lib\libopencv_gpu249.dll.a
LIBS += D:\development_tools\opencv249\opencv_mingw_build\lib\libopencv_highgui249.dll.a
LIBS += D:\development_tools\opencv249\opencv_mingw_build\lib\libopencv_imgproc249.dll.a
LIBS += D:\development_tools\opencv249\opencv_mingw_build\lib\libopencv_legacy249.dll.a
LIBS += D:\development_tools\opencv249\opencv_mingw_build\lib\libopencv_ml249.dll.a
LIBS += D:\development_tools\opencv249\opencv_mingw_build\lib\libopencv_nonfree249.dll.a
LIBS += D:\development_tools\opencv249\opencv_mingw_build\lib\libopencv_objdetect249.dll.a
LIBS += D:\development_tools\opencv249\opencv_mingw_build\lib\libopencv_ocl249.dll.a
LIBS += D:\development_tools\opencv249\opencv_mingw_build\lib\libopencv_objdetect249.dll.a
LIBS += D:\development_tools\opencv249\opencv_mingw_build\lib\libopencv_ml249.dll.a
LIBS += D:\development_tools\opencv249\opencv_mingw_build\lib\libopencv_imgproc249.dll.a
LIBS += D:\development_tools\opencv249\opencv_mingw_build\lib\libopencv_highgui249.dll.a
LIBS += D:\development_tools\opencv249\opencv_mingw_build\lib\libopencv_core249.dll.a
LIBS += D:\development_tools\opencv249\opencv_mingw_build\lib\libopencv_contrib249.dll.a

(網上有一種簡單方法,新增:
LIBS+=D:\development_tools\opencv249\opencv_mingw_build\lib
我這麼新增的時候出差,看到有人成功,有人沒成工,可以嘗試)

main.cpp檔案中新增:

#include "cv.h"
#include "cxcore.h"
#include "highgui.h"

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    IplImage*pImg;
    pImg=cvLoadImage("E:/F Disk/QT_test/opencv_qt_test/1.jpg",1);
    cvNamedWindow("Image",1);
    cvShowImage("Image",pImg);
    cvWaitKey(0);
    cvDestroyWindow("Image");
    cvReleaseImage(&pImg);

    return a.exec();
}
執行後,就可以看到一個二次元萌妹了


參考博文:

http://blog.163.com/allegro_tyc/blog/static/337437682014102411829281/

http://blog.csdn.net/qiurisuixiang/article/details/8665278

http://blog.csdn.net/superdont/article/details/26007717