0、寫在前面
最近在學習Opencv的知識,作爲圖像處理的小學生,光是配置這個環境就浪費了不少時間,寫在這裏是爲了讓他人少走彎路。好了,廢話不說了,直接講配置過程。
1、準備基本軟件環境
系統:win7 64bit。
OpenCV3.3 :OpenCV下載地址:http://opencv.org/downloads.html
QT5.9.1:Qt Creator下載地址:https://www.qt.io/download-open-source/
Cmake3.9.1:Cmake下載地址:https://cmake.org/download/ (推薦下最新版msi安裝文件)
VisualStudio2015:https://www.visualstudio.com/zh-hans/downloads/
2、安裝上面的這些軟件
OpenCV3.3這個最簡單,只需解壓到你想放在的目錄即可,然後配置一下系統環境變量path,這個不會配置的可以百度一下,很多教程的。這裏說一下我的路徑:D:\OpenCV\build\x64\vc14\lib
QT5.9.1的安裝:可以下載圖中的版本,安裝時選擇msvs2015的選項包即可:其他步驟很簡單!
Cmake3.9.1的安裝路徑不要有中文和空格,防止出現錯誤!
Cmake的安裝也比較簡單,下載完安裝文件之後,一路next即可。
安裝過程大概2分鐘左右,很快。
VisualStudio2015安裝這裏不詳細說明了!讀者可以自行百度!
3、使用Cmake編譯OpenCV庫
1.打開Cmake
1)填寫OpenCV3.1的源代碼目錄;
2)生成目錄(建議根目錄,方便以後使用);
3)點擊配置;
配置編譯器,這裏使用VS2015 64位編譯器,默認選擇即可。點擊Finish開始配置。
這裏勾選一下點擊紅色區域的WITH,勾選WITH_QT 和 WITH_OPENGL,然後再次configure。
如果出現錯誤,一般是路徑不對,可以自己手動添加的,然後再次configure,直到所有的錯誤消失出現
然後點擊Generate
此時編譯器以及環境配置已經完成,下一步開始生成。
4、使用msvs2015編譯庫
打開目標文件夾的工程
然後進行運行編譯,每次大概20分鐘。這是編譯後的結果:分別Debug和Release
但這裏面並不全是我們所需的文件,在生成的OpenCV目錄裏,只保留bin和lib就行了,其餘都可以刪除。
然後再把我們前面解壓的OpenCV3.3的build文件中包含的include複製過來,就構成了我們所需的全部OpenCV文件。
我們再爲自己編譯的OpenCV配置一下環境,以便以後的使用,在系統環境變量PATH中添加:
D:\opencvbuild\bin\Release;
D:\opencvbuild\bin\Debug;
D:\OpenCV\build\x64\vc14\bin;
5、在QT中配置OpenCV環境
新建一個Qt Application工程,在pro文件中添加 :
INCLUDEPATH+=D:\opencvbuild\include\opencv2
INCLUDEPATH+=D:\opencvbuild\include\opencv
INCLUDEPATH+=D:\opencvbuild\include
LIBS+= -LD:\opencvbuild\lib\Debug\
-lopencv_calib3d330d\
-lopencv_core330d\
-lopencv_dnn330d\
-lopencv_features2d330d\
-lopencv_flann330d\
-lopencv_highgui330d\
-lopencv_imgcodecs330d\
-lopencv_imgproc330d\
-lopencv_ml330d\
-lopencv_objdetect330d\
-lopencv_photo330d\
-lopencv_shape330d\
-lopencv_stitching330d\
-lopencv_superres330d\
-lopencv_ts330d\
-lopencv_video330d\
-lopencv_videoio330d\
-lopencv_videostab330d
然後main.cpp裏:
#include<opencv2/opencv.hpp>
#include<iostream>
#include<cstdlib>
using namespace cv;
using namespace std;
int main()
{
Mat src = imread("D:\\111.jpg",1);
if(src.empty()){
cout<<"ERROR:Cannot open the figure!"<<endl;
exit(-1);
}
namedWindow("Test",WINDOW_AUTOSIZE);
imshow("Test",src);
waitKey(0);
destroyAllWindows();
return 0;
}
最後結果:
寫在最後:其他可以參考鏈接
http://blog.csdn.net/cv_jason/article/details/53078554
http://blog.csdn.net/jieyanzhe3873/article/details/73775620
http://blog.csdn.net/abcvincent/article/details/68486522