轉自:ios
這篇文章做爲OpenCV的啓程篇,天然少不了先系統地介紹OpenCV開發環境的配置。web
在官網:http://opencv.org/上找到OpenCV windows版下載下來。windows
下載完後獲得文件OpenCV 2.4.8,雙擊後會提示解壓到某個地方,推薦放到D:\Program Files\下,好比D:\Program Files,(由於OpenCV項目文件打包的時候,根目錄就是opencv,因此咱們不須要額外的新建一個名爲opencv的文件夾,而後再解壓,那是 畫蛇添足的事情)而後點擊Extract按鈕
有些奇怪的是,淺墨在經歷OpenCV 2.4.6,OpenCV 2.4.7,OpenCV 2.4.8這三個版本之間轉換的時候,這三個版本的OpenCV存放在硬盤的不一樣的目錄下。但就沒動過這步裏面的環境變量,或許新版本的OpenCV已經 弱化了環境變量的配置。因此,你們能夠先跳過這步,若是最終配置出來報錯的話呢,能夠考慮下根據實際狀況加上這步的配置。ide
這步的配置方法以下:測試
計算機->(右鍵)屬性->高級系統設置->高級(標籤)->環境變量->(雙擊)path(用戶,系統裏面的path任選其一)->在變量值裏面添加相應的路徑。ui
對於32位系統,就添加:spa
」…… opencv\build\x86\vc10\bin」操作系統
而對於64位系統,能夠兩個都添加上:.net
」…… opencv\build\x86\vc10\bin」debug
和」…… opencv\build\x64\vc10\bin」,
這樣,到時候才能夠在編譯器Win32和X64中來回切換都吃得開,遊刃有餘~
例如,淺墨的就是
D:\Program Files\opencv\build\x64\vc10\bin;D:\ProgramFiles\opencv\build\x86\vc10\bin
注:變量值實際爲bin文件夾的路徑;D表示OpenCV安裝於D盤;X64表示運行系統環境位64位系統,若安裝於32位系統,應爲X86;vc10表示編譯環境爲Microsoft Visual Studio 2010;變量添加完成後須要註銷系統,纔會生效。
看我以前DirectX配置的相關博文的朋友們應該都知道,有一招叫屬性管理器,點進去,到
<視圖>--<屬性管理器>
打開熟悉的屬性頁面後,就是一番配置了。首先是在
【通用屬性】 ->【VC++目錄】 ->【包含目錄中】
添加上
D:\Program Files\opencv\build\include
D:\Program Files\opencv\build\include\opencv
D:\Program Files\opencv\build\include\opencv2 這三個目錄。
添加上D:\ProgramFiles\opencv\build\x86\vc10\lib這個路徑。
這裏選擇x86仍是x64是一個經常使人困惑的問題。固然,對於32位操做系統,鐵定就是選x86了。
若是是64位操做系統,不少童鞋會想固然自做聰明地選擇x64,其實否則。正確的理解是這樣的:
無論你是32位仍是64位操做系統,只用管你用win32編譯器仍是X64編譯器。
其實配置選擇什麼跟64位仍是32位系統沒有直接的關係,而是在於你在編譯你的程序的時候是使用那個編譯器。
編譯器選的是win32,就用x86
編譯器選的是X64,就用X64。不過通常狀況下,都是用的win32的X86編譯器。因此,不管32仍是64位操做系統,配置文件最好都選擇x86版的
另外,這裏的vc10表示vs2010,若是是其餘版本的visual studio,稍微要微調一下。
屬性管理器」工做區中,點擊項目 ->Debug|Win32->Microsoft.Cpp.Win32.userDirectories(反鍵屬性,或者雙擊)便可打開屬 性頁面。【通用屬性】 ->【連接器】->【輸入】->【附加的依賴項】
須要注意的是,所粘貼內容即爲D:\opencv \build\x86\vc10\lib下全部lib庫文件的名字;其中的248表明咱們的OpenCV版本爲2.4.8,如果其餘版本的配置則在這裏要 進行相應的更改,好比說2.4.6版的OpenCV,那麼這裏的opencv_calib3d248d.lib就要改爲 opencv_calib3d246d.lib了.
Debug文件庫名有d結尾,Release沒有,如 opencv_ts248d.lib和opencv_ts248.lib
不過我通常是在這裏把帶d和不帶d的通通寫在這裏,由於這裏是之後建立全部工程時都會繼承的公共屬性。
Opencv2.4.9的庫文件以下
注意: 按照如上的這種方式來配置,也許會出現debug下能夠運行可是release下不能運行的狀況(諸如圖片載入不了,報內存錯誤),這算是OpenCV自 2.4.1以來的一個bug。若是出現上述狀況,打開當前工程(注意是當前工程的屬性頁,不是通用屬性頁)的屬性頁,debug或者release哪一個報 錯,就把對應的帶d或不帶d的lib添加到【「當前」工程屬性】->【連接器】->【輸入】->【附加的依賴項】下便可。
相似錯誤如圖:
這一步是各類介紹OpenCV的配置的相關博文中都沒寫出來的。根據這些博文配置出來的環境,在運行基於OpenCV的程序的時候,每每會獲得這樣相似的結果:
這種問題最簡單粗暴的方法,是把相關的dll都拷貝到Windows操做系統的目錄下。若是你的Windows安裝在C盤,那麼路徑就是C:\Windows。按照以前個人OpenCV的存放環境,這些dll存放在D:\Program Files\opencv\build\x86\vc10\bin目錄下。
到這個目錄下,【Alt+A】全選,【Alt+C】拷貝,而後轉到C:\Windows下面,【Alt+V】複製,簡單粗暴地就完成了。
恩,環境配置大功告成,咱們來測試一下成果吧~
7.最終的測試
就用載入並顯示一張圖片到窗口的程序,用於咱們的配置測試新建一個空項目的控制檯應用程序,新建一個cpp文件,而後粘貼以下代碼:
爲了你們的考慮,仍是把工程文件發一下吧,雖然此次只有簡單的幾句代碼:
【OpenCV+VS2010開發環境配置 測試用例 by淺墨】下載
呼,生活不多是一路順風的,咱們的配置過程也是。淺墨在幾回的配置過程當中,出現了以下的幾種典型問題,我相信你可能會出現,就在這裏集中列舉一下吧,但願能爲你們解惑:
出現這個問題是由於include的時候粗枝大葉了。
若是你的版本是2.4.6。在這個版本下,opencv根文件夾下面就有個include,但咱們配置的時候若是包含的是他就坑爹了。
正確的應該填build裏面的那個include。
這個問題其實上面有過解釋了,無論你是32位仍是64位操做系統,只用管你用win32編譯器仍是X64 編譯器。
其實配置選擇什麼跟64位仍是32位系統沒有直接的關係,而是在於你在編譯你的程序的時候是使用那個編譯器。
編譯器是win32,就用x86
編譯器是X64,就用X64。不過通常狀況下,都是用的win32的X86編譯器。因此,
不管32仍是 64位操做系統,配置文件最好都選擇x86版的。
出現這個問題,把靜態庫不包含就好了。
Lib包含的問題。也許你同時包含了X86和X64的,或者包含出錯錯了。
5.明明圖片路徑是對的,卻載入不進去圖片,提示指針越界,有未經處理的異常
相似錯誤如圖: