Python-OpenCV學習(一):OpenCV結構


轉載請注明出處:danscarlett的博客園
 
OpenCV是計算機視覺領域應用最廣泛的開源工具包,基於C/C++,支持Linux/Windows/MacOS/Android/iOS,並提供了Python,Matlab和Java等語言的接口。2010年OpenCV發布了2.0版本,添加了非常完備的C++接口,從2.0開始的版本非常用戶非常龐大,至今仍在維護和更新。2015年OpenCV 3正式發布,除了架構的調整,還加入了更多算法,更多性能的優化和更加簡潔的API,另外也加強了對GPU的支持,現在已經在許多研究機構和商業公司中應用開來。相比OpenCV2,OpenCV3提供了更強的功能和更多方便的特性。不過考慮到和深度學習框架的兼容性,以及上手安裝的難度,這部分先以2為主進行介紹。
 
根據功能和需求的不同,OpenCV中的函數接口大體可以分為如下部分:
  • core:核心模塊,主要包含了OpenCV中最基本的結構(矩陣,點線和形狀等),以及相關的基礎運算/操作。
  • imgproc:圖像處理模塊,包含和圖像相關的基礎功能(濾波,梯度,改變大小等),以及一些衍生的高級功能(圖像分割,直方圖,形態分析和邊緣/直線提取等)。
  • highgui:提供了用戶界面和文件讀取的基本函數,比如圖像顯示窗口的生成和控制,圖像/視頻文件的IO等。
 
  針對視頻和一些特別的視覺應用,OpenCV也提供了強勁的支持:
  • - video:用於視頻分析的常用功能,比如光流法(Optical Flow)和目標跟蹤等。
  • - calib3d:三維重建,立體視覺和相機標定等的相關功能。
  • - features2d:二維特征相關的功能,主要是一些不受專利保護的,商業友好的特征點檢測和匹配等功能,比如ORB特征。
  • - object:目標檢測模塊,包含級聯分類和Latent SVM
  • - ml:機器學習算法模塊,包含一些視覺中最常用的傳統機器學習算法。
  • - flann:最近鄰算法庫,Fast Library for Approximate Nearest Neighbors,用於在多維空間進行聚類和檢索,經常和關鍵點匹配搭配使用。
  • - gpu:包含了一些gpu加速的接口,底層的加速是CUDA實現。
  • - photo:計算攝像學(Computational Photography)相關的接口,當然這只是個名字,其實只有圖像修復和降噪而已。
  • - stitching:圖像拼接模塊,有了它可以自己生成全景照片。
  • - nonfree:受到專利保護的一些算法,其實就是SIFT和SURF。
  • - contrib:一些實驗性質的算法,考慮在未來版本中加入的。
  • - legacy:字面是遺產,意思就是廢棄的一些接口,保留是考慮到向下兼容。
  • - ocl:利用OpenCL並行加速的一些接口。
  • - superres:超分辨率模塊,其實就是BTV-L1(Biliteral Total Variation – L1 regularization)算法
  • - viz:基礎的3D渲染模塊,其實底層就是著名的3D工具包VTK(Visualization Toolkit)。
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM