什么是opencv?
opencv是一個計算機視覺庫。它目前有兩個分支2.4.X和3.X,2.4.X版本是經典版本,網上的教程資源大多是關於它的,所以推薦使用2.4.X。
它能幫我做什么?
這意味着你可以在自己的程序中使用計算機視覺相關功能,但不必關注具體實現。就像你使用電腦,但並不用關注電腦內部的原理。你唯一需要知道的就是如何使用它。
我該如何使用它?
這就是本文的工作^-^ 。
1,下載opencv
首先到opencv官網下載win平台的opencv,解壓后你可以看到下面兩個文件夾——build和sources,build是官方已經為我們編譯好的可以直接使用的,而sources中是opencv的源碼,僅供高級玩家嘗試。
下載下來后可以大致瀏覽一下build文件夾下的內容:
粗略一看就看到了熟悉的x86與x64(32位用和64位用),還有vc11和vc12,雖然以前沒見過但大致也可以猜出vc11和vc12是指自己的VS中vc版本,我們可以根據自己的系統與vs版本來選擇。
2.配置環境變量
程序中的可執行文件,必須添加到系統環境變量PATH中才能被系統識別。這就類似一所房子,你必須登記到你的名下,才能使用它。opencv也是一樣,它在某些目錄中提供了一些可執行文件,所以我們必須將這個目錄添加到系統環境變量中。
比如說我的可執行文件目錄是E:\opencv\build\x64\vc12\bin
配置如下:
3.配置VS工程
在VS中新建一個win32 application的項目(略)。
3.1 配置頭文件位置
當你在自己的代碼中使用了opencv中的類或函數時,編譯器並不知道這是個怎樣的物體有什么功能。這就需要我們引用對應的頭文件,因為在對應的頭文件中有關於這個物體的描述,這樣程序才能正確編譯。然而這些頭文件在哪里呢?我們需要告訴編譯器。
比如我的頭文件目錄是:
E:\opencv\build\include
E:\opencv\build\include\opencv
E:\opencv\build\include\opencv2
將其配置到下面的“包含目錄”中:
3.2 配置庫文件位置與指定庫文件
include中的頭文件,只能大致的描繪opencv中的物體是怎樣的有什么功能。但具體的,實現的,可運行的二進制代碼全在庫文件中,也就是lib文件中。只有這些具體實現的二進制代碼鏈接到你的二進制代碼中,程序才能正常工作。然而這些庫文件在哪里呢?我們需要告訴編譯器。
先配置庫文件位置:
比如我的庫文件位置是 E:\opencv\build\x64\vc12\lib
將其配置到下面的“庫目錄”中:
然后指定庫文件:
opencv_calib3d2413.lib
opencv_calib3d2413d.lib
opencv_contrib2413.lib
opencv_contrib2413d.lib
opencv_core2413.lib
opencv_core2413d.lib
opencv_features2d2413.lib
opencv_features2d2413d.lib
opencv_flann2413.lib
opencv_flann2413d.lib
opencv_gpu2413.lib
opencv_gpu2413d.lib
opencv_highgui2413.lib
opencv_highgui2413d.lib
opencv_imgproc2413.lib
opencv_imgproc2413d.lib
opencv_legacy2413.lib
opencv_legacy2413d.lib
opencv_ml2413.lib
opencv_ml2413d.lib
opencv_nonfree2413.lib
opencv_nonfree2413d.lib
opencv_objdetect2413.lib
opencv_objdetect2413d.lib
opencv_ocl2413.lib
opencv_ocl2413d.lib
opencv_photo2413.lib
opencv_photo2413d.lib
opencv_stitching2413.lib
opencv_stitching2413d.lib
opencv_superres2413.lib
opencv_superres2413d.lib
opencv_ts2413.lib
opencv_ts2413d.lib
opencv_video2413.lib
opencv_video2413d.lib
opencv_videostab2413.lib
opencv_videostab2413d.lib
其實這就是庫文件目錄下的所有庫文件,你可以用cmd進入對應文件夾下,用“dir /b”命令來列出所有lib文件,然后復制到下面的“附加依賴項”中:
4.測試opencv
我們簡單的測試一下opencv打開一張圖片並顯示,代碼如下:
1 //讀取圖片並顯示 2 #include "stdafx.h" 3 #include<iostream> 4 #include <opencv2/core/core.hpp> 5 #include <opencv2/highgui/highgui.hpp> 6 using namespace cv; 7 int main() 8 { 9 Mat img = imread("D:\\test.jpg"); 10 namedWindow("測試opencv"); 11 imshow("測試opencv", img); 12 cvWaitKey(6000); 13 }
使用的圖片如下(將圖片保存到D盤根目錄,並改名為test,即與程序中的一致):
有了數據,有了程序,我們就可以運行了,但是千萬別忽略了這個:
運行效果(略)。
TIP:【VS2013中如何解決error C4996: 'fopen'問題】請參考【http://jingyan.baidu.com/article/ce436649fd61543773afd32e.html】