VS2010下配置OpenCV2.2


最近用上了Opencv2.2,在這里面使用的還有些門道,於是記錄下來,供大家參考

 環境:windows 7+visual studio 2010+opencv 2.1 

各位進行操作時,最好把其它無關的程序均關掉,最好把殺毒軟件關掉,360也都關掉,否則會出現未知的錯誤
如果所在的環境是VS2010,那么必須要用CV2.2 ,CV2.1是針對VS2008的版本
1、下載文件 
OpenCV2.2 
直接下載opencv2.2 for vs2010的安裝版進行安裝(下載網址:http://www.opencv.org.cn/index.php/Download)

CMAKE 2.8.1 
http://www.cmake.org/files/v2.8/cmake-2.8.1-win32-86.exe 
INTELTBB3.0[/url] 
http://www.threadingbuildingblocks.org/uploads/77/151/3.0/tbb30_20100406oss_win.zip 

這三個部件可以在打開迅雷后直接復制下載


2、首先安裝CMAKE2.8.1,然后將OpenCV2.2安裝到你將要放置OPENCV的地方,接着,解壓INTEL TBB 3.0,比如將OPENCV和TBB都放在D:\Program Files里面。並在OpenCV文件夾下創建子目錄D:\vs2010,用於存放編譯結果。 

檢查D:\Program Files\OpenCV2.2\bin和D:\Intel TBB 3.0\bin\ia32\vc10是否已經被加入到環境變量(我的電腦-屬性-環境變量)PATH,如果沒有,請加入。加入后需要注銷當前Windows用戶(或重啟)后重新登陸才生效。(可以在任務管理器里重啟explorer.exe) 

打開CMAKE 2.8.1,在Where is the source code后面填寫(或者選擇)OPENCV 2.2的安裝目錄,如D:\Program Files\OpenCV2.2,在Where to build the binaries里填寫剛創建的子目錄D:\vs2010。接着點擊Configure按鈕,在出現的對話框中選擇Visual Studio 10,下面的選項選擇Use default native compilers,點擊Finish繼續。 

過一會兒之后會出現一個配置窗口(此處注意在CMAKE配置的時候是不能夠打開VS2010的),然后勾選BUILD_SHARED_LIBS,BUILD_TESTS,OPENCV_BUILD_3DPARTY_LIBS,以及下面的WITH_JASPER,WITH_JPEG,WITH_PNG,WITH_TBB(一般這個沒默認選上),和WITH_TIFF選項 

 

這是配置時出現的錯誤,稍后一會就會解決

繼續,
勾好后再次點擊Configure,之后再配置窗口最上面會出現TBB_INCLUDE_DIR-NOTFOUND字樣的紅色選項,此處為CMAKE找不到INTEL TBB的包含文件為之所致,將INTEL TBB 3.0里面的INCLUDE文件夾路徑(注意是INCLUDE,不是INCLUDE里面的子文件夾)定位到該配置屬性的路徑里(就在這一項的Value列,你點擊一下就會出現選擇文件夾的對話框),再次點擊Configure,在TBB_LIB_DIR處又會出現紅色一行,此處為INTEL TBB的庫文件位置,此處必須將路徑定位到含有LIB文件的位置(就在這一項的Value列,你點擊一下就會出現選擇文件夾的對話框,別找不到),比如我的安裝位置是D:/Program Files/Intel TBB 3.0/lib/ia32/vc10,也就是說,在lib文件夾下會有子文件夾,必須定位到子文件夾對應的VC版本文件夾里去,這里由於是配置VS2010,所以我們選擇VC10文件夾,ia32子文件夾是32位系統,此處應根據對應操作系統選擇。 

然后,我們再次點擊Configure,此時所有紅色行已經變為白色,同時在下方的信息里面會有一條為Use TBB:YES的字樣,證明我們已經將INTEL TBB配置完畢,然后點擊Generate。 

3、完成后在剛創建的子文件夾D:\vs2010下會出現一個VS2010的解決方案文件OPENCV.sln,雙擊打開后,出現OPENCV 2.1的所有工程項目,先不要着急編譯。 

首先點擊Solution Explorer(解決方案資源管理器)里面Property Manager(屬性管理器)(在視圖--》其它窗口--》屬性管理器)下的選項卡,依次展開ALL_BUILD—Debug|Win32—右鍵單擊Microsoft.Cpp.Win32.user,選擇Properties(屬性),然后選擇VC++ Directories(VC++目錄),在Executable Directories(可執行文件目錄)里面將INTEL TBB 3.0的可執行路徑(bin)填寫到里面,此處與LIB一樣,必須定位到VC10才可以,例如我的是D:\Program Files\Intel TBB 3.0\bin\ia32\vc10,將Include Directories(包含目錄)定位到Intel TBB的Include文件夾即可,無需再往深入定位,在Library Directories(庫目錄)里填寫Intel TBB的LIB文件位置,定位到VC10文件夾。 

單擊確定之后,將選項卡切回到Solution Explorer(解決方案資源管理器),將編譯模式切換為Debug模式,右鍵單擊Solution OpenCV(解決方案OpenCV),選擇Rebuild Solution(重新生成解決方案),編譯后再右鍵單擊INSTALL項目,選擇Build(生成),之后將編譯模式切換為Release,重復debug模式下的步驟。完成后在你的解決方案文件夾D:\Program Files\OpenCV2.2\vs2010里面會生成bin目錄,include目錄,lib目錄。 

此時,OpenCV的*d.dll文件(for debug)和*.dll文件(for release)將出現在D:\vs2010\bin目錄中;

OpenCV的*d.lib文件(for debug)和*.lib文件(for release)將出現在D:\vc2010\lib目錄;

頭文件*.h出現在D:\vc2010\include\opencv中。

配置Opencv2.2的環境變量是一件非常麻煩的事情,需要很大耐心

配置Windows環境變量Path

將OPENCV安裝時的環境變量,以及Generate以后的VS2010\bin,VS2010\include\opencv2,forVS2010\lib 都加入Windows系統環境變量Path中。

D:\Program Files\OpenCV2.2\include

D:\Program Files\OpenCV2.2\forVS2010\bin

D:\Program Files\OpenCV2.2\forVS2010\include\opencv2

D:\Program Files\OpenCV2.2\forVS2010\lib

 

到此OPENCV 2.1配置完成,以后建立OPENCV項目時都需在項目里面添加依賴庫,
方法是先建立一個C++項目
配置OpenCV環境
菜單-->點擊Solution Explorer(解決方案資源管理器)-->Property Manager(屬性管理器)(在視圖--》其它窗口--》屬性管理器)下的選項卡
—Debug|Win32—右鍵單擊Microsoft.Cpp.Win32.user,選擇Properties(屬性),然后選擇VC++ Directories(VC++目錄),

需要編輯的項目有三個:Excutable files directory(可執行文件目錄),Include Directory(包含文件目錄),Library Directory(庫目錄)

可執行文件目錄中填寫的文件夾地址為:

因為我在剛開始安裝時使用的CV2.1所以浪費了很久,又拆下來重新裝的2.2,但是文件夾還是采用的2.1的根目錄文件夾,大家安裝2.2時,文件夾自然就是2.2的。

VC++目錄中  選擇 包含目錄,加入目錄 

VC++目錄中 選擇庫目錄,加入目錄 

至此,所有的目錄添加完畢,下面開始添加依賴庫。

在Properity Explorer(屬性管理器)里面右鍵選擇項目,選擇Properties(屬性),在Debug|Win32下選中Microsoft.Cpp.Win32.user右鍵選擇屬性,

然后在Linker(鏈接器)里面選擇Input(輸入),在依賴庫里添加OPENCV的D:\Program Files\OpenCV2.1\forVS2010\lib中的.lib文件名稱即可

文件名后面有小寫字母“d”的為Debug庫(調試模式庫),沒有“d”的為Release庫(發布模式庫)。例如active(debug)[活動(debug)]里添加cv210d.lib cvaux210d.lib cxcore210d.lib highgui210d.lib ml210d.lib,release里添加cv210.lib cvaux210.lib cxcore210.lib highgui210.lib ml210.lib 
我把所有的lib文件名都填進去了,帶d的Debug庫(調試模式庫)和不帶d的Release庫(發布模式庫)都放到這里面。OK!
新建win32控制台項目,修改主文件為: 

 

#include "stdafx.h"  
#include "highgui.h"  
  
//所有的以新風格命名的函數都在 cv 命名空間中   
using namespace cv;   
  
int _tmain(int argc, _TCHAR* argv[])   
{   
  
    const char* imagename = "E:\\lena.jpg";   
  
    Mat img = imread(imagename); // Matlab風格的 cvLoadImage 函數的另一種調用   
    if(img.empty())   
    {   
        fprintf(stderr, "Can not load image %s\n", imagename);   
        return -1;   
    }   
  
    if( !img.data ) // 檢查是否正確載入圖像   
        return -1;   
  
    namedWindow("image", CV_WINDOW_AUTOSIZE); //創建窗口   
    imshow("image", img); //顯示圖像   
  
    waitKey();   
  
    return 0;   
}  

 

在VS2010中,圖片路徑一定要寫成"E:\\lena.jpg";  這種形式。

在編譯時,可能直接Debug,程序不會有反應並且匯報:

Cannot find or open the PDB file

這個是因為在VS2010下的特殊原因,有人推薦

打開VS2010:工具--》選項--》調試--》符號
接下來就是選擇Microsoft,然后確認

但是這樣有一個缺點:編譯時間特別長,運行非常慢。

正解是:在運行時采用Ctrl+F5這樣問題就解決了。

在運行時還會出現雖然圖片的路徑正確,但是程序仍然報:cannot find the image

這時將VS2010的運行狀態從Debug轉換成Release,然后再Ctrl+F5,圖片正常顯示。

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM