Window10 OpenCV3.4.7 CMake3.18.0 QT5.5.0 編譯配置及調用

QT開發中經常遇到使用OpenCV,記錄一下OpenCV庫的編譯調用過程。

環境:Window10 64位

一、安裝軟件:1、OpenCV  2、CMake 3、QT

1、安裝OpenCV 3.4.7

下載地址:https://opencv.org/releases/        opencv-4.3.0-vc14_vc15.exe

安裝OpenCV很簡單,其實就是一個解壓動作,解壓到非中文目錄下,我的目錄是C:\OpenCV3.4.7

 

2、安裝QT5.5.0

qt-opensource-windows-x86-mingw492-5.5.0.exe

下載地址:http://download.qt.io/archive/qt/

我下載的是5.5帶MinGW版本,安裝沒什麼好講的,直接下一步,下一步,完成

3、安裝CMake3.18

cmake-3.18.0-rc2-win64-x64.msi

下載地址:https://cmake.org/download/

安裝時注意選擇添加到系統變量,其它默認一路下一步,直到完成

二、配置環境變量

C:\Program Files\CMake\bin  CMake環境變量

C:\Qt\Qt5.5.0\Tools\mingw492_32\bin    MinGW環境變量

三、配置編譯OpenCV

打開剛纔安裝的CMake

設置OpenCV源碼路徑

設置OpenCV編譯輸出路徑(自建目錄)

然後點擊下面的Configure按鈕,彈出窗口中的<指定該項目的生成器>選擇MinGW Makefiles,下面單選框選擇Specify  native compilers,單擊下一步;

彈出窗口,選擇C和C++編譯器的目錄,在QT5.5目錄中tools目錄裏的MinGW工具裏,單Finish完成

紅色行爲有錯誤,按下面的信息修改就行了,第一次點配置按鈕,要很長時間,更改後重新單擊配置按鈕,直到沒有錯誤

選中“WITH_OPENGL”、“WITH_QT”,將“WITH_IPP”取消。然後再次點【Configure】

Qt5_DIR            值爲:C:/Qt/Qt5.5.0/5.5/mingw492_32/lib/cmake/Qt5
QT_QMAKE_EXECUTABLE    值爲:C:/Qt/Qt5.5.0/5.5/mingw53_32/bin/qmake.exe
Qt5Concurrent_DIR        值爲:C:/Qt/Qt5.5.0/5.5/mingw53_32/lib/cmake/Qt5Concurrent
Qt5Core_DIR          值爲:C:/Qt/Qt5.5.0/5.5/mingw53_32/lib/cmake/Qt5Core
Qt5Gui_DIR              值爲:C:/Qt/Qt5.5.0/5.5/mingw53_32/lib/cmake/Qt5Gui
Qt5Test_DIR             值爲:C:/Qt/Qt5.5.0/5.5/mingw53_32/lib/cmake/Qt5Test
Qt5Widgets_DIR           值爲:C:/Qt/Qt5.5.0/5.5/mingw53_32/lib/cmake/Qt5Widgets
Qt5OpenGL_DIR            值爲:C:/Qt/Qt5.5.0/5.5/mingw53_32/lib/cmake/Qt5OpenGL

當信息顯示Configuring done且沒有錯誤時,單擊generate按鈕,生成完畢後,先不要關閉CMake如果後面編譯有錯誤,還要更改配置。


下面開始用MinGW來編譯OpenCV

使用管理員模式打開CMD

cd 到剛纔CMake生成的源碼目錄(就是之前自己新建的文件夾),準備編譯

輸入“mingw32-make”命令,如果提示找不到命令啥的,看看文章前面的MinGW系統變量是不是沒有設置,目錄爲C:\Qt\Qt5.5.0\Tools\mingw492_32\bin,根據你的QT安裝位置設置環境變量

按回車進行編譯

哦霍

一片綠油油後出現error

錯誤1

[ 40%] Building RC object modules/core/CMakeFiles/opencv_core.dir/vs_version.rc.obj

gcc: error: long: No such file or directory

解決方法:在cmake裏面找到OPENCV_ENABLE_ALLOCATOR_STATS或者在search裏面搜索,然後把後面的勾選去掉,接着Configure和Generate後,接着在cmd窗口中mingw32-make即可繼續編譯。

錯誤2

C:\OpenCV3.4.7\modules\videoio\src\cap_dshow.cpp:2298:41: error: 'sprintf_instead_use_StringCbPrintfA_or_StringCchPrintf
A' was not declared in this scope

C:\OpenCV3.4.7\modules\videoio\src\cap_dshow.cpp中添加
#define STRSAFE_NO_DEPRECATE

錯誤3

chmod’ 不是內部或外部命令,也不是可運行的程序 或批處理文件

    if(NOT CMAKE_HOST_WIN32)  # chmod may be not available on Win32/MinGW (and it is not required)
      set(_pch_prepare_command COMMAND chmod +x "${_pch_generate_file_cmd}")
    endif()
    ADD_CUSTOM_COMMAND(
      OUTPUT "${_output}"
      COMMAND ${CMAKE_COMMAND} -E make_directory "${_outdir}"
      COMMAND chmod +x "${_pch_generate_file_cmd}"
      ${_pch_prepare_command}

錯誤4

報錯文件test_hdr.cpp

error: 'time' was not declared in this scope

在頭部引用一下

#include <sys/time.h>

錯誤5

錯誤行:C:/OpenCV3.4.7Build/modules/dnn/test_precomp.hpp:50:27: fatal error: test_common.hpp: No such file or directory
 #include "test_common.hpp"

把C:\OpenCV3.4.7\modules\dnn\test\test_common.hpp複製到C:\OpenCV3.4.7Build\modules\dnn\

經過個把小時綠油油輸出後,編譯完成。

編譯成功後,再輸入mingw32-make install,回車運行

安裝完成

將編譯生成目錄中的bin目錄添加到系統變量

C:\OpenCV3.4.7Build\bin

四、QT調用測試

打開QT新建一個工程

在xxx.pro中添加

INCLUDEPATH+="C:\OpenCV3.4.7Build\install\include"
INCLUDEPATH+="C:\OpenCV3.4.7Build\install\include\opencv"
INCLUDEPATH+="C:\OpenCV3.4.7Build\install\include\opencv2"
LIBS += C:\OpenCV3.4.7Build\lib\libopencv_*.a

在main.cpp中添加

#include <cv.h>
#include <cxcore.h>
#include <highgui.h>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    //聲明IplImage指針
       IplImage *pImg;
       //載入圖片
       pImg = cvLoadImage("D:\\0200626235750.jpg", 1);
       //創建窗口
       cvNamedWindow("Image",1);
       //顯示圖像
       cvShowImage("Image",pImg);
       //等待按鍵
       cvWaitKey(0);
       //銷燬窗口
       cvDestroyWindow("Image");
       //釋放圖像
       cvReleaseImage(&pImg);

運行程序,如果顯示如下圖,則調用成功

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