【OpenCV】opencv2.4.10配置vs2010軟體的心得
關於opencv配置vs軟體的心得
在這之前我先介紹一下VS的版本,vc10表示是VS2010,vc11表示VS2012,vc12表示VS2013.
1.opencv下載與安裝
首先你可以到opencv的官方網站下載(免費的),opencv的版本很多,可以找一個網路上配置教程比較多的版本,因為這樣方便你解決問題。還有一個問題,那就是從官網下的opencv只支援vc11/vc12,那樣你可以選擇別的,比如opencv2.4.10可以支援vc10/vc11/vc12,opencv2.4.12支援vc11/vc12了。因為不喜歡vs12的風格,我還是堅持用vs10了。
下載後直接解壓到你想安裝的盤,解壓即安裝,點選Extract解壓。解壓後大概是一個3Gb左右的檔案。
2.opencv的Windows環境變數配置
首先右擊桌面上的“計算機”,選“屬性”,然後選擇“高階系統設定”。
接著點選“環境變數”進入。
在這裡,可以先在“使用者變數”這裡先新建一個OPENCV的變數。這裡是為了使後面的設定簡單點。變數值是你安裝的路徑,按照自己的路徑更改即可。
變數名:OPENCV
變數值:D:\opencv2.4.10\opencv\build
然後,在“系統變數”裡找到“path”這個變數,點選編輯,然後在最後加上這句: ;%OPENCV%\build\x64\vc10\bin 注意分號是必須的,用於隔開路徑。
這樣我們就把Windows環境變數設定好了。
3.配置vs2010
這裡教一種一次配置永久使用的方法。
3.1建立C++工程
第一步,開啟VS2010,新建一個C++的工程。點選“檔案”->“Win32控制檯應用程式”,填寫工程的名稱,選擇儲存路徑。
然後點選“下一步”。
然後,選中“空專案”,再點完成。這樣C++工程建立完畢。
再建一個C++程式
3.2設定屬性管理檔案
3.2.1在"Debug|Win32" 建立“OpencvDebugeconfig”配置檔案
第二步,點選“屬性管理器”,我們要在"Debug|Win32"和"Release|Win32"新增一個配置檔案。
右擊“Debug|Win32”,點選“新增新專案屬性表”。命名為“OpencvDebugeconfig”,然後點選新增
然後選擇“OpencvDebugeconfig”檔案,點選“屬性”進行設定
選擇“VC++目錄”->分別在“包含目錄”和“庫目錄”設定如下:
包含目錄:新增3個路徑:
D:\opencv2.4.10\opencv\build\include
D:\opencv2.4.10\opencv\build\include\opencv2
D:\opencv2.4.10\opencv\build\include\opencv
庫目錄:新增1個路徑:
D:\opencv2.4.10\opencv\build\x86\vc10\lib
然後在“連結器”->“輸入”->“附加依賴項”中輸入如下:
至此,“Debug|Win32”裡的“OpencvDebugeconfig”就設定完全了。
opencv_ml2410d.lib
opencv_calib3d2410d.lib
opencv_contrib2410d.lib
opencv_core2410d.lib
opencv_features2d2410d.lib
opencv_flann2410d.lib
opencv_gpu2410d.lib
opencv_highgui2410d.lib
opencv_imgproc2410d.lib
opencv_legacy2410d.lib
opencv_objdetect2410d.lib
opencv_ts2410d.lib
opencv_video2410d.lib
opencv_nonfree2410d.lib
opencv_ocl2410d.lib
opencv_photo2410d.lib
opencv_stitching2410d.lib
opencv_superres2410d.lib
opencv_videostab2410d.lib
3.2.1在"Release|Win32" 建立“OpencvReleaseconfig”配置檔案
同建立“OpencvDebugeconfig”的方法建立“OpencvReleaseconfig”屬性,“OpencvReleaseconfig”中的“包含目錄”和 “庫目錄”和“OpencvDebugeconfig”一樣。
如下:
選擇“VC++目錄”->分別在“包含目錄”和“庫目錄”設定如下:
包含目錄:新增3個路徑:
D:\opencv2.4.10\opencv\build\include
D:\opencv2.4.10\opencv\build\include\opencv2
D:\opencv2.4.10\opencv\build\include\opencv
庫目錄:新增1個路徑:
D:\opencv2.4.10\opencv\build\x86\vc10\lib
注意,“OpencvReleaseconfig”配置檔案在“連結器”->“輸入”->“附加依賴項”中輸入如下:
opencv_objdetect2410.lib
opencv_ts2410.lib
opencv_video2410.lib
opencv_nonfree2410.lib
opencv_ocl2410.lib
opencv_photo2410.lib
opencv_stitching2410.lib
opencv_superres2410.lib
opencv_videostab2410.lib
opencv_calib3d2410.lib
opencv_contrib2410.lib
opencv_core2410.lib
opencv_features2d2410.lib
opencv_flann2410.lib
opencv_gpu2410.lib
opencv_highgui2410.lib
opencv_imgproc2410.lib
opencv_legacy2410.lib
opencv_ml2410.lib
然後儲存“OpencvDebugeconfig” 和“OpencvReleaseconfig”配置檔案,
這樣設定就全部完成了。
4.程式測試
測試程式,在C++程式中寫如下:
#include <iostream>
#include <opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
using namespace cv;
int main()
{
Mat img=imread("pic.jpg");//讀入一張圖片
namedWindow("Test"); //建立一個名為Test視窗
imshow("Test",img); //視窗中顯示影象
waitKey(5000); //等待5000ms後窗口自動關閉
}
5.我遇到的問題
1.>LINK : fatal error LNK1123:轉換到 COFF期間失敗:檔案無效或損壞
我使用了方法二。
問題說明:
當安裝VS2012之後,原來的.NET 4.0會被替換為.NET 4.5。解除安裝VS2012時,不會恢復.NET 4.0。
l當VS2012安裝後,VS2010的cvtres.exe就無法使用了。如果你的PATH環境變數中VS2010的工具路徑第一個出現,而且連結器需要將.res檔案轉換為COFF 物件格式,就會導致LNK1123錯誤。
l當VS生成PE檔案頭時,使用的cvtres.exe版本錯誤,不能與當前的.NET平臺相容。
解決方案:
參考:
http://stackoverflow.com/questions/10888391/link-fatal-error-lnk1123-failure-during-conversion-to-coff-file-invalid-or-c
因為是cvtres.exe版本錯誤導致的結果,所以凡是能使VS連結器找到正確的cvtres.exe版本的方法都可以解決該問題。或者使VS連結器不生成COFF的方法都可以。
【方法一】
當前系統中存在兩個cvtres.exe檔案,版本不同。讓VS2010使用.NET 4.5的cvtres.exe程式。
具體步驟:
重新命名或刪除:(vs2010安裝的位置)C:\Program Files (x86)\Microsoft Visual Studio10.0\VC\bin\cvtres.exe
這樣C:\Windows\Microsoft.NET\Framework\v4.0.30319(.NET 4.5)中的cvtres.exe檔案就可以被VS2010使用。
【方法二】
解決方法如下:
專案\屬性\配置屬性\清單工具\輸入和輸出\嵌入清單:原來是“是”,改成“否”。
說明:這種方法每個工程均需要修改配置。
【方法三】
安裝:VS2010 SP1. 該版本應該是能使用.NET 4.5的,並配有正確的cvtres.exe版本。
注意:安裝VS 2010 SP1 時會移除64-bit 編譯器. 通過安裝 VS 2010 SP1 compiler pack 能夠重新獲得。
【方法四】
解除安裝.NET 4.5,重灌.NET 4.0
2. 在Windows資料夾下加入OpenCV動態連結庫的問題
這一步是各種介紹OpenCV的配置的相關博文中都沒寫出來的。根據這些博文配置出來的環境,在執行基於OpenCV的程式的時候,往往會得到這樣類似的結果:
這種問題最簡單粗暴的方法,是把相關的dll都拷貝到Windows作業系統的目錄下。如果你的Windows安裝在C盤,那麼路徑就是C:\Windows。按照之前我的OpenCV的存放環境,這些dll存放在
D:\Program Files\opencv\build\x86\vc10\bin目錄下。
到這個目錄下,【Ctrl+A】全選,【Ctrl+C】拷貝,然後轉到C:\Windows下面,【Ctrl+V】複製,簡單粗暴地就完成了。
恩,環境配置大功告成,我們來測試一下成果吧~
6.參考網頁資料
【1】【OpenCV入門教程之一】OpenCV 2.4.8 +VS2010的開發環境配置:
【2】Visual Studio2010配置Opencv2.4.9:
【3】Windows7+VS2010下OpenCV環境配置:
【4】vs2010 問題 >LINK :fatal error LNK1123: 轉換到 COFF 期間失敗: 檔案無效或損壞:
【5】OpenCV學習-——OpenCV永久配置(win7 64位+VS2012+OpenCV 2.4.6)