1. 學習了哪些知識,計算機視覺才算入門
計算機視覺是一個很大的范疇的總和,有兩種學習方式,一種是閱讀基礎書,搞懂它的每一部分;另一種是找一個問題,看文獻,編程實現,不斷往深走。這兩種學習方式是互補的,如果你看了好幾年書還不能上手解決問題,或者只會解決某些很特殊的問題,對其他問題束手無策都不算成功。因此你需要把看書掌握一般知識和編程實驗解決具體問題齊頭並進。下面說你要干什麼:
下載安裝OpenCV2
OpenCV是一個非常強大的計算機視覺庫,包括了圖像處理、計算機視覺、模式識別、多視圖幾何的許多基本演算法,有c++和Python兩種介面。學習的材料首先是安裝目錄下doc文件夾里的幫助文檔,提供所有函數的用法,任何時候對任何函數有疑問請查閱幫助文檔,安裝目錄下還提供一大堆寫好的演示程序供參考;《OpenCV_2 Computer Vision Application Programming Cookbook》是一本比較基礎的介紹材料,它的缺點是沒有介紹分類器(模式識別)方面的函數怎麼用。
雖然網上還有其他很多流行的庫,比如處理特徵點的VLfeat,處理點雲的PCL,處理GPU運算的CUDA,處理機器人問題的ROS和MRPT,但是這些都是你在解決具體問題時才會考慮去用的東西,如果你想快速讀取視頻、做個屏幕交互程序、使用流行的分類器、提取特徵點、對圖像做處理、進行雙目重建,OpenCV都提供相應函數,因此在你不知道該把餘生用來干什麼的時候,先裝OpenCV學習。
讀綜述
Computer Vision: Algorithms and Application。這本書用1000頁篇幅圖文並茂地瀏覽了計算機視覺這門學科的諸多大方向,如果你不知道計算機視覺是一門搞什麼的學科,這本書是你絕佳的選擇。它的優點是涉獵了大量文獻,缺點是缺乏細節,因此很顯然只讀這本書你根本沒法上手工作,因為它講的實在是太粗糙了。如果你對其中的某一部分感興趣,就請去讀相關文獻,繼續往下走,這就是這本書的意義。有中文版,但是翻譯的不好,也不建議你細細去讀,看看裡面的圖片即可。
Computer Vision: Models, Learning, and Inference:這本書是我認為研究生和高年級本科生入門計算機視覺最好的教材。它內容豐富,難度適中,推導翔實,語言流暢,強烈推薦你花2個月時間把這本書讀完。
多視圖幾何
Multiple View Geometry in Computer Vision:這本書是多視圖幾何的聖經,意思就是說想搞三維重建或者圖像測量之類的項目,這本書是必讀的。它需要你有線性代數的基本知識,會SVD分解即可。第一版有中文版,翻譯的非常好,但是已經絕版了,可以上淘寶高價買一本,第二版添加的內容很少,在網上可以下載到。
模式識別
模式識別核心就是訓練一個函數來擬合手頭的數據,如果數據的標簽是離散的,稱為分類問題,如數據的標簽是連續的,稱為回歸問題;分類又分有監督分類和無監督分類,有監督分類器有神經網路、支持向量機、AdaBoost、隨機場、樹模型等等。當你拿到一大堆數據,需要從裡面找關系的時候,一般都需要使用模式識別演算法來訓練一個函數/分類器/模型,因此模式識別是機器學習的核心。
《模式分類(第二版)》:這是一本適合普通讀者閱讀的教材,介紹了模式識別中經典的分類器,講解細致,語言生動,難度適中,每一個演算法都有偽代碼。
The Elements of Statistical Learning:這本書使用嚴謹的數學工具分析模式識別演算法,它比較難,但是非常深刻。每拿到一個模型它都會分析這個模型在數學上是如何構造的,並且推導模型的分類錯誤率。分析和推導是這本書的精髓。
Pattern Recognition and Machine Learning:這是一本從貝葉斯學派的角度分析模式識別模型的書,它使用的工具主要是概率論,比較難,非常深刻,內容非常豐富。
雖然這兩本書很難,但是它們用到的數學知識不過是基本的概率論和線性代數,只是用的比較活,計算機視覺這個學科需要的數學知識也是這個水平。
圖形學
圖形學教材首先推薦《計算機圖形學與幾何造型導論》,這本書用流暢的語言介紹了圖形學的基礎知識,選材有趣,推導簡潔但是絕不跳步走,保證你能看懂而且不會看煩。
光線追蹤器我看過一本薄的《Realistic Ray Tracing》和一本厚的《Ray Tracing from the Ground Up》,兩本書都有代碼。後一本內容極其豐富,有中文版,翻譯尚可。後一本唯一的缺點就是講不清楚BRDF,但這恰恰是前一本的亮點。
還有一些比較偏的書,比如偏微分方程在圖像處理中的應用、細分、壓縮感知、馬爾科夫隨機場、超解析度分析,概率機器人、多尺度幾何分析,這些領域都有各自的名著,你在某個領域深挖的時候,類似這樣的書可能會出現在參考文獻中,那時再看不遲。
讀文獻
寫到書里的知識基本上都有些過時,你得通過看文獻掌握各個領域最新的發展動態。計算機視覺的頂級期刊有兩個PAMI和IJCV,頂級會議有ICCV和CVPR,在科學網—[轉載]計算機視覺方向的一些頂級會議和期刊有更加詳細的介紹。
2. 如何從入門開始學習OpenCV
方法如下:
先去下載最新版OpenCV,網址如下:http://nchc.dl.sourceforge.net/project/opencvlibrary/opencv-win/2.4.3/OpenCV-2.4.3.exe。下載完成後解壓到相應目錄。本人解壓到D:Program FilesOpenCV2.4.3。
有的文章提到使用CMake把OpenCV下面的範例生成為Visual Studio的工程,此處我沒有這樣做。直接使用範例。這里先把OpenCV目錄下面的幾個重要目錄做個說明:
doc目錄:主要包含OpenCV的幫助文檔。其中opencv2refman.pdf主要是OpenCV的各種類和函數的使用說明。
opencv_tutorials.pdf,主要是下面教學代碼目錄裡面各個教學範例的簡單講解。
opencv_cheatsheet.pdf主要是最常用OpenCV類和函數的集合。此3個PDF文檔對自學者幫助最大。
samplescpp utorial_code目錄:裡麵包含基本教學代碼。和上面的opencv_tutorials.pdf文檔遙相呼應,構成一個完整的自學體系。
build目錄:包含編譯,調試,發布所需要的各類動態庫,靜態庫,頭文件等。因為OpenCV2.4.3好像只支持Visual Studio 2008以上版本,我在這里以Visual Studio 2008為例講解如何讓範例跑起來。
添加環境變數:此處我在path環境變數中添加如下目錄:D:Program FilesOpenCV2.4.3uildx86vc9in。記住在前面一個目錄後面加分號。
在Visual Studio中包含頭文件目錄:見附件中的圖片,已經用紅色矩形框標識如何操作。
在Visual Studio中包含庫文件目錄:見附件中的圖片,已經用紅色矩形框標識如何操作。4
建立一個新建Visual Studio VC win32控制台應用工程,這里我選擇帶預編譯頭的工程,省去添加cpp文件的工作。
代碼創建:這里我選擇samplescpp utorial_codeImgProcMorphology_2.cpp文件。先添加包含目錄,如下(以後所有範例均可以如下添加):#include <opencv2/opencv.hpp>#include <stdio.h>然後復制代碼。
編譯文件:自然少不了要包含靜態庫,要添加的庫(debug版和release差別就是文件名後多了一個d標識是debug版)如下:
debug版:
opencv_calib3d243d.lib
opencv_contrib243d.lib
opencv_core243d.lib
opencv_features2d243d.lib
opencv_flann243d.lib
opencv_gpu243d.lib
opencv_haartraining_engined.lib
ibrelease版:
opencv_calib3d243.lib
opencv_contrib243.lib
opencv_core243.lib
opencv_features2d243.lib
opencv_flann243.lib
opencv_gpu243.lib
字元集設置:如果編譯過程中出現如下錯誤:不能將參數 1 從「_TCHAR *」轉換為「const std::string &」原因如下: 無法從「_TCHAR *」轉換為「const std::string」。請字元集設置為「使用多位元組字元集」。
最後指定命令後參數:方法見附件。這樣就可以不用在windows命令行下輸入參數了,方便調試,但是要注意,圖片必須放在你所建立的工程目錄下(和.cpp以及.h文件同一目錄)。否則就要加上相應的路徑。如果參數多於1個,請以空格分開。
支持所有參數設置完成,開始編譯運行吧。如果Visual Studio無問題的話,按照以上按部就班操作,每個範例均可以正常運行。
3. cmake編譯opencv總是出錯 求助啊
是你的編譯器版本不對, You probably need to select a different build tool.
在點擊configure時,會出來一個選擇編譯器的框,你選一個你機器里有的編譯器就可以了。
4. 作為大二學生,學習Opencv應該有什麼技巧有什麼建議
人們的方式和方法以及現在的科技來說一些技巧和建議。
首先,由於科技的發展和社會的快速變化,許多網站變成了綜合性的網站,不止可以觀看電影兒視頻電埋如悔視劇。還可以觀看自己喜橡租歡的一些方面的知識和技能。比如現在的嗶哩嗶哩就是現在年輕人所喜歡的一個網站因為在裡面可以學到幾乎全部你想要學到的知識和技能,因為嗶哩嗶哩裡面有各種方面的強者他們所做的教學視頻供人們免費觀看和學習;第二,人們也可以去當地的圖書館裡面去學習有關的書籍,以此來獲取自己想要學到的知識和技能,因為圖書館裡面的書人們所需要的各種方面的知識幾乎應有盡有,所以人們也可以通過去圖書館閱讀一些在這個行業裡面有所成就的人所編的書來去學習自己想要獲取的知識和技能;第三,我們也可以去找相關專彎正業的老師去學習自己想要的知識和技能,因為畢竟老師可以幫助你解決你在學習當中所遇到的困惑可以很直接的去給予你幫助,這也是比較有效的途徑。
因為現在時代的快速進步,社會上所需要的人才已不再是單一專業的人才而是需要全面的人才,所以學習一門其他方面的知識和技能是很有必要的,而以上這些方法便是學習一個自己沒有接觸過不太熟悉的技巧和建議來幫助學習自己沒有接觸過的知識和技能。
5. Ubuntu20.04安裝opencv4.5.4參考文檔:
要為Ubuntu 20.04系統安裝OpenCV 4.5.4,首先確保你已安裝cmake和make。以下是安裝步驟:
遇到`libavcodec-dev`找不到的問題,可以考慮更換NVIDIA源解決。具體步驟如下:
bash
deb ports.ubuntu.com/ubuntu... bionic main universe restricted
... (其餘源列表省略)
替換後,更新源並重新嘗試安裝。