在Windows10中配置OpenCV環境
軟件平臺:Windows 10
、CMake 3.13.4
和Qt 5.11.3
下載opencv項目
下載Windows版本的OpenCV-3.1.0:https://sourceforge.net/projects/opencvlibrary/files/opencv-win/3.1.0/opencv-3.1.0.exe/download
下載的文件爲:opencv-3.1.0.exe
,其是一個壓縮文件,雙擊之,將其解壓至一個選定的文件夾中。如下爲項目的文件結構,其中,一個爲build
文件夾,一個爲sources
文件夾,build
爲一個標準的項目構建目錄,它適用於一般的情況。而如果build
不適用時,可選擇編譯sources
中的源代碼,以生成一個適合自己系統使用的,和build
類似的構建目錄。
本系統將使用的,用於編譯項目的Qt編譯套件爲:Qt 5.11.3 MinGW 5.3.0 32bit
,爲了顧名思義,在與build
的同路徑中,新建一個構建目錄mingw530
,以存儲相關的編譯文件和安裝文件。
使用CMake工具對opencv項目進行構建與分析
由於OpenCV是一個cmake項目,所以要編譯OpenCV源碼,需要先安裝cmake工具。在安裝了cmake工具後,可通過如下的步驟,對opencv項目進行構建與分析。
打開CMake(cmake-gui)
選定源代碼路徑和構建目錄路徑
第一行爲源代碼路徑
,選擇..\opencv\sources
文件夾,本系統的爲:D:\Software\opencv\sources
。第二行爲項目構建目錄
,此目錄存儲了cmake、make和install輸出的相關文件,路徑位置可自選,本系統的爲:D:\Software\opencv\mingw530
。
選定源代碼路徑和構建目錄路徑後,點擊Configure
,以配置項目。第一次點擊Configure
時,會出現如下的界面,用於設置生成器和編譯器。
選擇MinGW Makefiles
和Specify native compilers
,並點擊Next
。
爲項目選擇代碼編譯器,此處將選擇Qt中Tools下Qt 5.11.3 MinGW 5.3.0 32bit
編譯套件中的C/C++編譯器。本系統的C/C++編譯器路徑爲:C編譯器:D:/Software/Qt/Qt5.11.3/Tools/mingw530_32/bin/gcc.exe
,C++編譯器:D:/Software/Qt/Qt5.11.3/Tools/mingw530_32/bin/g++.exe
,具體的路徑可根據Qt安裝路徑修改。點擊Finish
。
。
等待一會,待Configure
完後,在輸出的cmake選項中,選擇WITH_QT
(選擇Qt支持)和WITH_OPENGL
,然後,再一次點擊Configure
進行項目配置。配置結束後,點擊Generate
,以生成用於編譯的相關文件。待Configure
和Generate
這兩步完成後,關閉掉CMake(cmake-gui)
界面,然後開始對項目進行編譯與安裝。
編譯與安裝
本系統將使用Qt 5.11.3 MinGW 5.3.0 32bit
編譯套件編譯與安裝opencv項目,其編譯和安裝命令分別爲:mingw32-make
和mingw32-make install
定位
# 打開命令行窗口,並定位至項目的構建目錄
# 本系統的在:D:\Software\opencv\mingw530
#
cd d:
cd Software/opencv/mingw530
編譯
mingw32-make
安裝
# 項目的安裝目錄默認在構建目錄下的install文件夾中
# 本系統的在:D:/Software/opencvmingw530/install
#
mingw32-make install
配置環境變量
在系統環境變量Path
中加入:D:\Software\opencv\mingw530\install\x86\mingw\bin;D:\Software\opencv\mingw530\bin;
如此,對opencv的編譯、安裝與配置就完成了!
如下爲構建目錄mingw530
的文件結構,其中,文件夾install
就存儲了我們以後將要使用的相關安裝文件
打開項目的安裝文件夾install
,如下爲install
的文件結構,其中,include
中包含的是項目頭文件,x86
中包含的是項目庫文件。而頭文件與庫文件就是調用一個庫所必需的兩類型文件。
要在程序中使用opencv,只要在項目中添加相關頭文件與庫文件的路徑即可,如下即爲opencv項目的相關頭文件與庫文件
要在Qt項目中使用opencv,需要在項目的項目管理文件.pro
中,添加以下代碼,以完成往程序中添加相關頭文件與庫文件的操作(這些代碼包含了opencv項目的所有頭文件與庫文件)
# 添加opencv項目的所有頭文件
#
INCLUDEPATH += D:\Software\opencv\mingw530\install\include \
D:\Software\opencv\mingw530\install\include\opencv \
D:\Software\opencv\mingw530\install\include\opencv2
# 添加opencv項目的所有庫文件
#
LIBS += D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_calib3d310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_core310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_features2d310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_flann310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_highgui310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_imgcodecs310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_imgproc310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_ml310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_objdetect310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_photo310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_shape310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_stitching310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_superres310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_ts310.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_video310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_videoio310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_videostab310.dll.a
測試opencv
基於qmake構建工具,新建一個Qt控制檯應用(項目管理文件的後綴爲:.pro
):test
新建文件或項目–>Application–>Qt Console Application–>項目名稱:test–>一路next下去
測試項目的結構
./test
|
+---build
|
+---images
| |
| +---1.jpg
|
+---main.cpp
|
+---test.pro
|
+---test.pro.user
代碼清單:main.cpp
#include<iostream>
#include<string>
#include<opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main()
{
cv::Mat img;
//根據圖像的目錄進行修改,記得用轉義字符'\\'
string filePath="..\\images\\1.jpg";
img =cv::imread(filePath,IMREAD_COLOR);
//判斷圖像文件是否正確讀取
if(img.data==nullptr)
{
cerr<<"文件:"<<filePath<<",不存在!"<<endl;
return 0;
}
//讀取圖像的寬、高和通道信息
cout<<"圖像寬爲:"<<img.cols<<",";
cout<<"高爲:"<<img.rows<<",";
cout<<"通道爲:"<<img.channels()<<endl;
cv::namedWindow("An image",WINDOW_NORMAL);
cv::resizeWindow("An image",800,450);
cv::imshow("An image",img);
cv::waitKey(0);
return 0;
}
往項目的項目管理文件test.pro
中添加以下的opencv頭文件與庫文件包含代碼
,這些包含代碼
可根據opencv項目安裝情況的不同而做出相應的修改
INCLUDEPATH += D:\Software\opencv\mingw530\install\include \
D:\Software\opencv\mingw530\install\include\opencv \
D:\Software\opencv\mingw530\install\include\opencv2
LIBS += D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_calib3d310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_core310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_features2d310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_flann310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_highgui310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_imgcodecs310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_imgproc310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_ml310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_objdetect310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_photo310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_shape310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_stitching310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_superres310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_ts310.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_video310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_videoio310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_videostab310.dll.a
程序的運行結果
安裝opencv_contrib模塊
下載opencv-3.1.0對應的opencv_contrib-3.1.0模塊:https://github.com/opencv/opencv_contrib/tree/3.1.0
。下載下來的是一個壓縮包:opencv_contrib-3.1.0.zip,將其解壓後,把其放到opencv的源代碼中。
打開cmake-gui,選擇之前安裝opencv-3.1.0時設置好的源碼路徑和構建目錄路徑。選擇好相應的路徑後,會出現如下的界面,在中間的方框中,定位於OPENCV_EXTRA_MODULES_PATH
項,在其後面添加opencv_contrib中的模塊路徑,本系統的爲:D:\Software\opencv\sources\opencv_contrib-3.1.0\modules
,注意,是精確至\modules
。設置好路徑後,點擊界面左下方的Configure
,待配置完後,如果中間處可能還會有紅色的塊,那繼續點擊Configure
進行配置(一般會點擊兩次Configure
),直到中間處的所有項都變白爲止。至此,進行下一步,點擊Generate
,以生成相應的用於編譯的文件,如果結束後,提示Generate Done
,那麼整個安裝opencv_contrib模塊的過程就成功一半了。
打開一個命令行窗口,並定位於opencv的構建目錄,然後,輸入編譯命令:mingw32-make
對項目進行編譯。
編譯成功後,輸入安裝命令:mingw32-make install
對項目進行安裝。
安裝成功後,opencv_contrib模塊就編譯且安裝成功了。
如下爲安裝了opencv_contrib模塊後的庫文件夾中的內容。與安裝opencv_contrib模塊之前相比,無疑增加了許多內容。
在Qt項目中使用opencv時,往項目的項目管理文件.pro
中,添加的頭文件與庫文件包含命令需作出如下的更新。
# 添加opencv項目的所有頭文件
#
INCLUDEPATH += D:\Software\opencv\mingw530\install\include \
D:\Software\opencv\mingw530\install\include\opencv \
D:\Software\opencv\mingw530\install\include\opencv2
# 添加opencv項目的所有庫文件
#
LIBS += D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_aruco310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_bgsegm310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_bioinspired310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_calib3d310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_ccalib310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_core310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_cvv310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_datasets310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_dnn310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_dpm310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_face310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_features2d310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_flann310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_fuzzy310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_highgui310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_imgcodecs310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_imgproc310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_line_descriptor310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_ml310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_objdetect310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_optflow310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_photo310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_plot310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_reg310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_rgbd310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_saliency310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_shape310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_stereo310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_stitching310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_structured_light310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_superres310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_surface_matching310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_text310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_tracking310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_ts310.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_video310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_videoio310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_videostab310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_xfeatures2d310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_ximgproc310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_xobjdetect310.dll.a \
D:\Software\opencv\mingw530\install\x86\mingw\lib\libopencv_xphoto310.dll.a
在Ubuntu14.04中配置OpenCV環境
參考文檔
windows10下安裝opencv3.2+QT Creator+MingGW:https://blog.csdn.net/a8039974/article/details/80572806