一、學習OPENCV前期儲備知識
1、需要一定的編程能力,C/C++,好像現在還開放了python等接口。
2、需要一定的計算機視覺、數字圖像處理理論知識。
二、OPENCV的編程基本流程包括編輯、編譯和連接三大步驟。下面是流程圖。
1、編輯(Edit)就是編寫代碼,可以用記事本、Notepad++各類編輯器來編寫,當然不推薦用記事本編寫,因為功能過于簡單。
2、編譯(compile)將某種語言轉換成目標文件。目標文件包含機器代碼和代碼在運行時使用的數據。編譯器也有很多,比如windows下的cl.exe。
3、連接(link)是將多個目標文件,以及庫文件生產可執行的文件。常用連接器有Windows下的link.exe。
4、運行(Run)即雙擊就可以運行,將程序載入CPU。
5、以上幾個步驟只是一個編程的流程,在處理很多個源文件時一般都使用集成開發環境比如Visual C++等。
6、解釋頭文件
7、解釋庫文件
庫文件中包含一系列的子程序。例如在上一點中,foo.cpp源文件中 實現了foo()函數,我們假設foo()函數是包含重要算法的函數,我們需要將foo()函數提供給客戶使用,但是不希望客戶看到算法源代碼。為了達到這一目的,我們可以將foo.cpp編譯程庫文件,庫文件是二進制的,在庫文件中是看不到原始的源代碼的。 庫和可執行文件的區別是,庫不是獨立程序,他們是向其他程序提供服務的代碼。
三、OPENCV是什么?
OpenCV其實就是一堆C和C++語言的源代碼文件,這些源代碼文件中實現了許多常用的計算機視覺算法。例如C接口函數cvCanny()實現了Canny邊緣提 取算法??梢灾苯訉⑦@些源代碼添加到我們自己的軟件項目中,而不需要自己再 去寫代碼實現Canny算法,也就是不需要重復“造輪子”。
四、圖像的基本操作
1、一副尺寸為M*N的圖像可以用一個M*N的矩陣來表示,矩陣元素的值表示這個位置上的像素的亮度。
2、一般來說,灰度圖用2維矩陣表示,彩色(多通道)圖像用3維矩陣(M × N×3)表示。對于圖像顯示來說,目前大部分設備都是用無符號8位整 數(類型為CV_8U) 表示像素亮度。
3、灰度圖像的存儲示意圖(一般存儲順序以圖像最左上點開始,也可能是最左下點)
4、RGB圖像存儲示意圖(RGB圖像的通道順序為BGR)
下一個筆記開始介紹OPENCV的基本函數。
文中內容來自于仕琪教授的《OPENCV入門教程》,本文只是整理學習。