opencv目錄(轉)

github:https://github.com/opencv/opencvjava

OpenCV 3 的源代碼文件夾:python

  • 3rdparty/: 包含第三方庫,如用視頻解碼用的 ffmpeg、jpg、png、tiff 等圖片的解碼庫。
  • apps/: 包含進行 Haar 分類器訓練的工具,OpenCV 進行人臉檢測即是基於 Haar 分類器。若是你想檢測人臉之外的圖片,千萬不要錯過這幾個工具。
  • cmake/: 包含生成工程項目時 cmake 的依賴文件,用於只能搜索第三方庫,普通開發者不須要關心這個文件夾的內容。
  • data/: 包含 OpenCV 庫及範例中用到的資源文件,Haar 物體檢測的分類器位於 haarcascades 子文件中。
  • doc/: 包含生成文檔所需的源文件及輔助腳本。
  • include/: 包含入口頭文件。OpenCV 子文件夾中是 C 語言風格的 API,也就是《學習 OpenCV》中描述的 API 函數,官方將逐漸淘汰 C 風格函數,所以我不推薦你們使用該文件夾中的頭文件。OpenCV 2 子文件夾中只有一個 opencv.hpp 文件,這是 OpenCV 2 及 OpenCV 3 推薦使用的頭文件。
  • modules/: 包含核心代碼,OpenCV 真正的代碼都在這個文件夾中。OpenCV 從 2.0 開始以模塊的方式組織各類功能,近兩年模塊的數量增加得很快,後面我會依次介紹每一個模塊的做用。
  • platforms/: 包含交叉編譯所需的工具鏈及額外的代碼,交叉編譯指的是在一個操做系統中編譯供另外一個系統使用的文件。
  • samples/: 這是你們最喜歡的範例文件夾,後面我也會進一步講解。

CPU模塊

  • androidcamera/: 僅用於 Android 平臺,使得能夠經過與其餘平臺相同的接口來控制 Android 設備的相機。
  • core/: 核心功能模塊,定義了基本的數據結構,包括最重要的 Mat 類、XML 讀寫、OpenGL 三維渲染等。
  • imgproc/: 全稱爲 Image Processing,即圖像處理,包括圖像濾波、集合圖像變換、直方圖計算、形狀描述子等。圖像處理是計算機視覺的重要工具。
  • highgui/: 高級圖形界面及多媒體文件讀寫,包括用戶界面、Qt、對圖像及視頻文件的讀寫操做。
  • video/: 視頻分析模塊,包括背景提取、光流跟蹤、卡爾曼濾波等,作視頻監控的開發者會常常使用這個模塊。
  • calib3d/: 相機標定及三維重建。相機標定用於取出相機自身缺陷致使的畫面形變,還原真實的場景,確保計算的準確性。三維重建一般用在雙目視覺(立體視覺),即兩個標定後的攝像頭觀察同一個場景,經過計算兩幅畫面中的相關性來估計像素深度。
  • features2d/: 包含 2D 特徵值檢測的框架。包含各類特徵值檢測器及描述子,如 FAST、MSER、OBRB、BRISK 等。各種特徵值擁有統一的算法接口,所以在不影響程序邏輯的狀況下能夠替換替換。
  • objdetect/: 物體檢測模塊,包括 Haar 分類器、SVM 檢測器及文字檢測。
  • ml/: 全稱爲 Machine Learning,即機器學習。包括統計模型、K 最近鄰、支持向量機、決策樹、神經網絡等經典的機器學習算法。
  • flann/: 用於在多維空間內聚類及搜索的近似算法,作圖像檢索的開發者對它不會陌生。
  • photo/: 計算攝影學,包括圖像修補、去噪、HDR 成像、非真實感渲染等。若是讀者想實現 Photoshop 的高級功能,那麼這個模塊必不可少。
  • stitching:/ 圖像拼接,可用於製做全景圖。
  • nonfree/: 受專利保護的算法,包括 SIFT 和 SURF。從功能上來講,這兩個算法屬於 features2d 模塊,但因爲它們都是受專利保護的,相擁在項目中可能須要專利方的許可。
  • contrib:/ 包含新添加的實驗性質的代碼。開發者期待已久的人臉識別功能便位於這個模塊內,名爲 FaceRecognizer。
  • legacy/: 英文含義爲遺產,即廢棄已久的代碼,官方不推薦使用這個模塊中的功能。
  • optim/: 全稱爲 Optimization,這個模塊包含通用的數值優化。包含線性規劃等算法。
  • shape/: 形狀匹配算法模塊,用於描述形狀、比較形狀。
  • softcascade/: 另外一種物體檢測算法,Soft Cascade 分類器,包含檢測模塊和訓練模塊。
  • superres/: 全稱爲 Super Resolution,用於加強圖像的分辨率。
  • videostab/: 全稱爲 Video Stabilization,用於解決相機移動拍攝時視頻不夠穩定的問題。
  • viz/: 三維可視化模塊。能夠認爲這個模塊實現了一個簡單的三維可視化引擎,有各類 UI 空間和鍵盤、鼠標交互方式。底層實現基於 CTK 這個第三方庫。

CUDA模塊

這些模塊的名稱都以 cuda 開始,cuda 是顯卡製造商 NVIDIA 推出的通用計算語言,在 OpenCV 3 中有大量的模塊已經被移植到了 cuda 語言。讓咱們依次看一下。android

  • cuda/: CUDA- 加速的計算機視覺算法,包括數據結構 cuda::GpuMat、基於 cuda 的相機標定及三維重建等。
  • cudaarithm/: CUDA- 加速的矩陣運算模塊。
  • cudabgsegm/: CUDA- 加速的背景分割模塊,一般用於視頻監控。
  • cudacodec/: CUDA- 加速的視頻編碼與解碼。
  • cudafeatures2d/: CUDA- 加速的特徵檢測與描述模塊,與 features2d/ 模塊功能相似。
  • cudafilters/: CUDA- 加速的圖像濾波。
  • cudaimgproc/: CUDA- 加速的圖像處理算法,包含直方圖計算、霍夫變換等。
  • cudaoptflow/: CUDA- 加速的光流檢測算法。
  • cudastereo/: CUDA- 加速的立體視覺匹配算法。
  • cudawarping/: 實現 CUDA- 加速的快速圖像變換,包括透視變換、旋轉、改變尺寸等。

samples/ 文件夾

  • android/: Android 平臺的範例。既有徹底是 Java 的工程,也有徹底是 C++ 的工程,也有更爲常見的 Java 與 C++ 共存的工程。
  • c/: 使用 C API 的範例。在 C API 逐漸退出歷史舞臺後,這個文件夾也應該會隨之消失吧。
  • cpp/: 因爲 OpenCV 是一款 C++ 庫,所以 C++ 的返利是最多的,後面將重點介紹。
  • directx/: directx (d3d) 是微軟的私有三維圖像 API,這個文件夾中的範例覆蓋了 d3d九、d3d十、d3d11.
  • gpu/: 利用 cuda 加速的範例。
  • java/: OpenCV 3 官方支持 Java 語言綁定,所以這裏演示如何使用 Java 版本的 OpenCV。
  • python2/: OpenCV 3 官方支持 Python 語言綁定,所以這裏演示使用 Python 2 版本的範例。
  • tapi/: tapi 是 OpenCV 3 的一個新特性,使用 cv::UMat 替代 cv::Mat,實現 CPU 和 GPU 的運算使用統一的接口,再也不須要顯式地在 CPU 和 GPU 之間傳遞數據,方便開發人員。
  • winrt/: Windows RT 平臺的範例,開發語言是微軟的 C++ 「方言」.

samples/cpp/ 文件夾中的範例介紹

  • 3calibration.cpp/: 同時標定三臺水平放置的相機。git

  • bagofwords_classification.cpp/: 使用圖像檢測實現簡易的圖像搜索功能。github

  • bgfg_gmg.cpp/: 演示 GMG 背景檢測算法的使用方式。算法

  • bgfg_segm.cpp/: 演示高斯混合背景檢測算法的使用方式。api

  • brief_match_test.cpp/: 使用 BRIEF 特徵值來匹配兩張圖像。網絡

  • build3dmodel.cpp/: 演示如何使用基礎矩陣和特徵值來建立三維模型。數據結構

  • calibration.cpp/: 完整的多用途標定程序。app

  • calibration_artificial.cpp/: 在程序中生成一個虛擬的相機,並進行標定。

  • camshiftdemo.cpp/: 讀取實時的攝像頭數據,並演示基於均值偏移算法的視頻跟蹤。

  • chamfer.cpp/: 使用 Chamfer 算法匹配兩副邊緣圖像。

  • cloning_demo.cpp/: 命令行模式的圖像克隆。

  • cloning_gui.cpp/: 圖形界面交互的圖像克隆。

  • connected_components.cpp/: 查找並繪製圖像中的連通區域。

  • contours2.cpp/: 查找並繪製圖像中的輪廓。

  • convexhull.cpp/: 查找並繪製由點的集合組成的凸包。

  • cout_mat.cpp/: 使用 cout 來輸出各類格式化的 Mat 對象。

  • create_mask.cpp/: 演示如何建立黑白掩碼圖像。

  • dbt_face_detection.cpp/: 基於檢測的人臉跟蹤代碼。

  • delaunay2.cpp/: 經過鼠標交互式地生成 Delaunay 三角形。

  • demhist.cpp/: 演示直方圖的用法。

  • descriptor_extractor_matcher.cpp/: 演示 features2d 檢測框架的用法。

  • detection_based_tracker_sample.cpp/: 與 dbt_face_detection.cpp 相似。

  • detector_descriptor_evaluation.cpp/: 評估各類特徵檢測器和描述子。

  • detector_descriptor_matcher_evaluation.cpp/: 評估各類特徵檢測器和匹配器。

  • dft.cpp/: 演示一幅圖像的離散傅里葉變換。

  • distrans.cpp/: 顯示邊緣圖像的距離變換值。

  • drawing.cpp/: 演示繪畫和文字顯示功能。

  • edge.cpp/: 演示 Canny 邊緣檢測。

  • em.cpp/: 對隨機生成的數據點進行 EM 聚類。

  • fabmap_sample.cpp/: 演示 FAB-MAP 圖像檢索算法。

  • facerec_demo.cpp/: 人臉識別。

  • fback.cpp/: 實時的 Farneback 光流跟蹤。

  • ffilldemo.cpp/: 演示 floodFill() 像素填充算法。

  • filestorage.cpp/: 演示序列化到外部文件,如yml、xml等。

  • fitellipse.cpp/: 將輪廓點匹配到橢圓。

  • freak_demo.cpp/: 演示 FREAK 特徵值的用法。

  • gencolors.cpp/: 演示 generateColors()。

  • generic_descriptor_match.cpp/: 基於 SURF 的兩幅圖像間的匹配。

  • grabcut.cpp/: 演示 GrabCut 分割算法。

  • houghcircles.cpp/: 用霍夫算法檢測圓。

  • houghlines.cpp/: 用霍夫算法檢測直線。

  • hybridtrackingsample.cpp/: 混合跟蹤算法(Hybrid Tracker)的演示。

  • image.cpp/: 來回轉換 cv::Mat 和 IplImage。

  • image_alignment.cpp/: 演示 findTransformECC() 函數。

  • image_sequence.cpp/: 使用 VideoCapture 對象讀取序列幀。

  • imagelist_creator.cpp/: 建立圖像列表到 xml 文件。

  • inpaint.cpp/: 使用鼠標交互地進行圖像修補。

  • intelperc_capture.cpp/: Intel 感知計算設備相關的函數。

  • kalman.cpp/: 使用卡爾曼濾波進行二維跟蹤。

  • kmeans.cpp/: Kmeans 聚類算法的演示。

  • laplace.cpp/: 拉普拉斯邊緣檢測。

  • latentsvm_multidetect.cpp/: latentSVM 檢測器。

  • letter_recog.cpp/: 字母識別。

  • linemod.cpp/: 基於 OpenNI 的體感設備應用。

  • lkdemo.cpp/: 演示Lukas-Kanade 光流法。

  • logpolar_bsm.cpp/: 演示 LogPolar 盲點模型。

  • lsd_lines.cpp/: LSD 線段檢測。

  • matcher_simple.cpp/: SURF 特徵檢測。

  • matching_to_many_images.cpp/: 一對多的特徵檢測。

  • meanshift_segmentation.cpp/: 演示基於均值漂移的色彩分割函數——meanShiftSegmentation()。

  • minarea.cpp/: 尋找最小包圍盒、包圍圓。

  • morphology2.cpp/: 形態學圖像處理。

  • npr_demo.cpp/: 演示各類非真實感渲染效果。

  • opencv_version.cpp/: 輸出 OpenCV 庫的版本號。

  • openni_capture.cpp/: 演示 OpenNI 相關的體感設備。

  • pca.cpp/: 基於 PCA 的人臉識別。

  • peopledetect.cpp/: 基於 cascade 或 hog 進行物體(人)檢測。

  • phase_corr.cpp/: 演示 phaseCorrelate() 函數。

  • points_classifier.cpp/: 演示各類機器學習算法。

  • rgbdodometry.cpp/: 對深度傳感器如 Kinect 的數據進行處理。

  • segment_objects.cpp/: 實時地在視頻或相機畫面中檢測前景物體。

  • shape_example.cpp/: 比較並檢索形狀。

  • shape_transformation.cpp/: 用 SURF 特徵值檢測形狀並進行變換。

  • squares.cpp/: 檢測圖像中的方塊形狀。

  • starter_imagelist.cpp/: 一個 「hello worl」 性質的入門範例。

  • starter_video.cpp/: 另外一個 「hello worl」 性質的入門範例。

  • stereo_calib.cpp/: 雙目視覺的標定。

  • stereo_match.cpp/: 計算左右視覺的圖像的差別,生成點雲文件。

  • stitching.cpp/: 演示圖像拼接算法。

  • stitching_detailed.cpp/: 演示更多參數的圖像拼接算法。

  • textdetection.cpp/: 實時場景中的文字定位與識別。

  • train_HOG.cpp/: 訓練 HOG 分類器。

  • ufacedetect.cpp/: 人臉檢測。

  • video_homography.cpp/: 使用 FAST 特徵值來跟蹤平面物體。

  • videostab.cpp/: 演示 videostab 中各個參數的用法。

  • watershed.cpp/: 演示著名的分水嶺圖像分割算法。

做者:YimianDai連接:https://www.jianshu.com/p/193a6d15ffe0

相關文章
相關標籤/搜索