安裝完OpenCV2.4.11後(即將下載好的opencv安裝包解壓到某個文件夾,我的安裝目錄是C:\Program Files\OpenCV24),先配置環境變量,配置環境變量時,建議把x86和x64的的bin目錄都加上:
系統(或用戶)環境變量如下:
變量名 | 變量值 |
---|---|
Path | C:\Program Files\OpenCV24\opencv\build\x64\vc10\bin;C:\Program Files\OpenCV24\opencv\build\x86\vc10\bin |
OPENCV | C:\Program Files\OpenCV24\opencv\build |
不然可能會報錯:程序“XXXXXX”已退出,返回值爲 -1073741701 (0xc000007b)。
由於VS2010默認編譯平臺是Win32,所以在給VS2010配置OpenCV時,我使用的是x86目錄。當然如果要選擇x64的編譯平臺,需要在配置管理器中新建x64平臺,,x64平臺的配置和Win32的類似,只是在配置的時候需要使用x64目錄,屬性管理器中也需要選擇相應的x64屬性頁配置。
雙擊上圖選中部分,進行配置(這是全局配置,以後所有項目都採用該配置,當然也可以在指定項目屬性中進行配置,不過這樣只對指定項目有用)。
建議以下配置都選中 。
可執行目錄中添加:
C:\Program Files\OpenCV24\opencv\build\x86\vc10\bin
包含目錄中添加:
C:\Program Files\OpenCV24\opencv\build\include
C:\Program Files\OpenCV24\opencv\build\include\opencv
C:\Program Files\OpenCV24\opencv\build\include\opencv2
庫目錄中添加:
C:\Program Files\OpenCV24\opencv\build\x86\vc10\lib
附加庫目錄中添加:
C:\Program Files\OpenCV24\opencv\build\x86\vc10\lib
附加依賴項中添加C:\Program Files\OpenCV24\opencv\build\x86\vc10\lib中的庫文件:
Debug庫(調試模式庫):
opencv_calib3d2411d.lib
opencv_contrib2411d.lib
opencv_core2411d.lib
opencv_features2d2411d.lib
opencv_flann2411d.lib
opencv_gpu2411d.lib
opencv_highgui2411d.lib
opencv_imgproc2411d.lib
opencv_legacy2411d.lib
opencv_ml2411d.lib
opencv_nonfree2411d.lib
opencv_objdetect2411d.lib
opencv_ocl2411d.lib
opencv_photo2411d.lib
opencv_stitching2411d.lib
opencv_superres2411d.lib
opencv_ts2411d.lib
opencv_video2411d.lib
opencv_videostab2411d.lib
Release庫(發佈模式庫):
opencv_calib3d2411.lib
opencv_contrib2411.lib
opencv_core2411.lib
opencv_features2d2411.lib
opencv_flann2411.lib
opencv_gpu2411.lib
opencv_highgui2411.lib
opencv_imgproc2411.lib
opencv_legacy2411.lib
opencv_ml2411.lib
opencv_nonfree2411.lib
opencv_objdetect2411.lib
opencv_ocl2411.lib
opencv_photo2411.lib
opencv_stitching2411.lib
opencv_superres2411.lib
opencv_ts2411.lib
opencv_video2411.lib
opencv_videostab2411.lib
我剛開始添加的是x64目錄,編譯時一直報錯:error LNK2019: 無法解析的外部符號”XXXX”
後面換成x86目錄才編譯通過,原因可能是因爲我選的編譯平臺是Win32,所以只能用x86目錄。
示例程序:
#include <opencv2\opencv.hpp>
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<iostream>
using namespace cv;
int main(int argc, char *argv[])
{
Mat lena=imread("lena.jpg"); //載入圖像到Mat,jpg文件和該cpp在同一文件夾
namedWindow("lena"); //創建一個名爲 "lean"的窗口
imshow("lena",lena); //顯示名爲 "lena"的窗口
waitKey(5000); // 只對窗口機制起作用(顯示5000ms,隨後返回-1,即窗口關閉),若在此期間有按鍵按下,則馬上返回按鍵的ASCII碼。
//system("pause");
return 0;
}
輸出結果:
這裏必須在imshow後加入waitkey,因爲WaitKey不止是Wait Key 而已,它其實還涉及到消息響應,有這個函數cv內部的WndProc函數才能起作用,纔會更新窗口。