1. 程式人生 > >OpenCV3.1.0+VS2013配置+Win7(64位)

OpenCV3.1.0+VS2013配置+Win7(64位)

    最近需要做影象處理,打算使用的OpenCV,借了一本毛星雲、冷雪飛著的《OpenCV3程式設計入門》,感覺確實不錯,講的很詳細,但自己動手搭建的時候,遇到了很多問題,比如目前OpenCV官網最新的版本是OpenCV3.1.0,build裡只有x64,但書上寫的很詳盡:不管是32位還是64位的作業系統,在編譯程式的時候一般情況下,都是用的Win32的x86編譯器。但書上只強調了,配置為簡最好都使用x86版本,卻沒有給出新版OpenCV3中沒有x86的問題解決方法。於是,我一開始編譯之後,報錯error LNK1112: 模組計算機型別“X86”與目標計算機型別“x64”衝突 F:\VS2013 OpenCV3\HelloOpenCV\HelloOpenCV\Debug\HelloOpenCV.obj。自己很著急不知道該怎麼辦。反覆查看了幾個地方,都改成了x64.。。。。。不知道如何解決這個問題。

更換了硬碟之後,重新配置了一次OpenCV,這次在下載的時候,發現有OpenCV3.1.0版本了,所以我就下載了截止到目前為止最新的版本進行配置。

        PS我之前使用的是,OpenCV3.0.0+VS2013。具體的配置可以參考一下兩個連結:

雖然配置OpenCV不是一件很繁瑣的事情,但是因為不是很瞭解每一步的作用,所以有時候一不小心就會出錯。下面就跟大家分享一下我配置的方法以及一些技巧。

在這之前,像做飯一樣,我們得先準備好材料:

        VS2013+OpenCV3.1.0

        OpenCV3.1.0可以到OpenCV的官網上面下載:

        

下載完成後,得到的是一個

.exe

        

接著執行它即可得到我們需要的資料夾。

-------------------------------------------------------上面是一些準備工作,下面正式開始-----------------------------------------------------

我想介紹兩種方法,前一種比較low,每次使用VS新建一個工程時,需要重新配置;後一種效率比較高,每次使用VS的時候只需要新增現有的屬性表(不清楚屬性表是什麼沒關係哈,耐心往下看)即可,本文有一些截圖過於細節,目的是為了方便初次配置的朋友,之前配置過的朋友可以跳著看哈。

(一)先來介紹第一種方法。

1、配置環境變數。

我的電腦(右鍵)——屬性——高階系統設定——環境變數——Path(雙擊)

        

在原有的Path後面加上分號;然後加上D:/Work_Software/OpenCV3.1/opencv/build/x64/vc12/bin


        注意加上的路徑是你的電腦上build/x64/vc12/bin所對應的路徑,不要照搬我上面的路徑。
        再注意最後不用加分號,分號只加在路徑之間,而且切忌將原來的Path都刪除!!!
        PS:這個bin資料夾是什麼來頭呢?裡面有一些dll檔案,也就是動態連結庫,可以理解成是opencv裡面用到的函式的實現。

        (初次配置OpenCV的朋友可以忽略此括號中的話,PS:配置過3.1.0之前版本的朋友會發現,3.1.0版本中build資料夾中只有x64資料夾,而沒有了x86資料夾。也就是說,在配置3.1.0版本之後,使用VS進行OpenCV相關的程式設計的時候,只能使用64位的編譯器,而不能使用32位的編譯器了。這與之前版本有所不同,之前是,32位系統只能使用32位的編譯器,而64位的系統可以使用32位或者64位的編譯器。這個是我自己琢磨出來的,如果有錯誤的地方,歡迎指正。)
        好了,到這裡,環境變數就配置完成了,有的說法是,環境變數配置完成後需要重啟一下電腦才能生效,這個沒有親測過,保險起見的話可以重啟一下,順便放鬆一下眼睛~~~~

2VS中的配置。

        (1)首先,開啟VS2013並新建工程如下:




        (2)接著,在原始檔處新建一個main.cpp檔案如下:



        這樣就完成了新建工程的任務,接下來就要對我們新建的工程進行設定了。下面才是關鍵:

3)將32位編譯器Win32改為64位編譯器x64,操作如下圖:




4)接下來,對工程test1進行設定,總共有三個東西需要設定:包含目錄”“庫目錄以及附屬依賴項,一個一個來。

第一,編輯包含目錄如下:




選擇build資料夾中的include資料夾操作如下:


設定好包含目錄之後,我們後面的使用中就可以在我們程式的開頭將與OpenCV有關的標頭檔案通過“#include<opencv2/opencv.hpp>”這樣的方式包含進來了。

        PS:有的教程不僅僅將include資料夾的路徑新增到包含目錄中,而且將include資料夾中opencvopencv2這兩個資料夾的路徑也新增到包含目錄中了。這一步可有可無,區別在於,如果我將opencv2資料夾的路徑也新增到包含目錄中,那麼我在我的程式開頭就可以將上面說到的“#include<opencv2/opencv.hpp>”改寫成“#include<opencv.hpp>”,編譯器可以自己跑到opencv2資料夾中查詢。

第二,編輯庫目錄,類似於編輯包含目錄,將/build/x64/vc12/lib的路徑新增到庫目錄中如下圖(容易知道,lib也就是library庫的縮寫):


第三,新增附屬依賴項如下:



需要注意的是,我們這裡新增的附屬依賴項是以“d”結尾的,也即是Debug模式的,如實想用Release模式的話,則將上面的“opencv_world310d.lib”改為“opencv_world310.lib”即可。

配置過之前版本的朋友會發現,以前2點幾版本的OpenCV需要新增一大堆的附屬依賴項,到了3.0的時候僅僅需要兩個.lib,到了3.1.0的時候,就只剩下一個了!!!

好了,到此為止,第一種方法就介紹完了,只要在新建的main.cpp檔案中執行一下下面的測試程式碼:

#include<opencv2/opencv.hpp>

using namespace cv;

int main()

{

Matpicture = imread("F://My_Desktop//1st//no_phone//1.jpg");

imshow("測試程式", picture);

waitKey(0);

}

就可以欣賞到我們自己的勞動成果啦!imread後面的路徑是所要顯示的照片的路徑,這裡使用了“//”而不是“/”是因為“/”C++中有轉義的作用,所以要用兩個“/”“//”

當然在前面也說到了,用這種方法的缺點是每次使用VS新建一個工程的時候,都要重複上面的21-24)。所以,下面我將要介紹第二種方法!


---------------------------------------------------------第二種方法-----------------------------------------------------------------

(二)第二種方法。

        1、配置環境變數。同上面的方法一樣,如果在使用方法一的時候已經配置過了,那麼這一步可以跳過。

2VS中的配置。

1)、(2)同(一)21-2

3)新增新專案屬性表。

開啟屬性管理器:


這時候出現的視窗是下面這樣的,這是使用32位編譯器的情況,如上面說到的,我們要將編譯器改為64位的:


這時候需要開啟配置管理器,新建x64




這樣操作之後,屬性管理器視窗多出了兩個東西如下:


接下來在Debug|x64或者Relase|x64右鍵(這裡以Debug為例):


新增屬性表,名稱改成一個方便自己記憶的名字,我這裡用的是opencv_3.1.props


接著,在我們新新增的屬性表處右鍵選擇屬性:


然後就得到了一個很親切的視窗,沒錯,這個在上面出現過,設定的過程也跟上面一樣。按照上面的(一)24)所說的方法設定好包含目錄”“庫目錄以及附屬依賴項”。


好了,當你設定好點下確定之後,你同樣可以在main.cpp中輸入(一)中給出的測試程式,執行即可。

下面是重點,當你下一次再開啟VS新建工程的時候,你需要做的僅僅是下面的事情:

第一步:新建工程;

第二步:開啟配置管理器(上面有說到如何開啟),將Win32改為x64

第三步:在屬性管理器中,新增現有屬性表,將上面製作好的opencv_3.1.props新增進來如下圖所示。


這樣就大功告成啦!!!接著在新建的main.cpp檔案中就可以程式設計了,如果你不嫌煩的話,可以在試一下上面的測試程式。

謝謝你耐心看完它,希望能對你有所幫助!