OpenCV 3 的改動在哪?

2021-07-08 12:20:52 字數 2318 閱讀 8472

本文原版是譯作《opencv 2 計算機視覺程式設計手冊》的附錄,經過刪減後在專欄中刊登。

opencv 3 就要正式發布了,但是很多讀者還在用 opencv 2,甚至 opencv 1。你們一定想知道,是否有必要公升級到 3,以及如何提前進行準備。

cmake/,包含生成工程專案時 cmake 的依賴檔案,用於智慧型搜尋第三方庫,普通開發者不需要關心這個資料夾的內容。

data/,包含 opencv 庫以及範例中用到的資源檔案,haar 物體檢測的分類器位於haarcascades子檔案中。

doc/,包含生成文件所需的原始檔以及輔助指令碼。

include/,包含入口標頭檔案。opencv 子資料夾中是 c 語言風格的api,也就是《learning opencv (第一版)》中描述的api函式,官方將逐漸淘汰 c 風格函式,因此我不推薦大家使用該資料夾中的標頭檔案。opencv2 子檔案中只有乙個 opencv.hpp 檔案,這是 cv2 以及 cv3 推薦使用的標頭檔案。

modules/,包含核心**,opencv 真正的**都在這個資料夾中。opencv 從2.0開始以模組的方式組織各種功能,近兩年模組的數量增長得很快,後面我會依次介紹每個模組的作用。

platforms/,包含交叉編譯所需的工具鏈以及額外的**,交叉編譯指的是在乙個作業系統中編譯供另乙個系統使用的檔案。

androidcamera/,僅用於android平台,使得可以通過與其他平台相同的介面來控制android裝置的相機。

core/,核心功能模組,定義了基本的資料結構,包括最重要的 mat 類、xml 讀寫、opengl三維渲染等。

imgproc/,全稱為 image processing,即影象處理。包括影象濾波、集合影象變換、直方圖計算、形狀描述子等。影象處理是計算機視覺的重要工具。

imgcodec/,負責各種格式的的讀寫,這個模組是從以前的 highgui 中剝離的。

highgui/,高階圖形介面及與 qt 框架的整合。

calib3d/,相機標定以及三維重建。相機標定用於去除相機自身缺陷導致的畫面形變,還原真實的場景,確保計算的準確性。三維重建通常用在雙目視覺(立體視覺),即兩個標定後的攝像頭觀察同乙個場景,通過計算兩幅畫面中的相關性來估算畫素的深度。

features2d/,包含 2d 特徵值檢測的框架。包含各種特徵值檢測器及描述子,例如 fast、mser、obrb、brisk等。各類特徵值擁有統一的演算法介面,因此在不影響程式邏輯的情況下可以進行替換。

objdetect/,物體檢測模組。包括haar分類器、svm檢測器及文字檢測。

ml/,全稱為 machine learning,即機器學習。包括統計模型、k最近鄰、支援向量機、決策樹、神經網路等經典的機器學習演算法。

flann/,用於在多維空間內聚類及搜尋的近似演算法,做影象檢索的讀者對它不會陌生。

photo/,計算攝影學。包括影象修補、去噪、hdr成像、非真實感渲染等。如果讀者想實現photoshop的高階功能,那麼這個模組必不可少。

stitching/,影象拼接,可用於製作全景圖。

nonfree/,受專利保護的演算法。包含sift和surf,從功能上來說這兩個演算法屬於features2d模組的,但由於它們都是受專利保護的,想在專案中可能需要專利方的許可。

shape/,形狀匹配演算法模組。用於描述形狀、比較形狀。

softcascade/,另一種物體檢測演算法,soft cascade 分類器。包含檢測模組和訓練模組。

superres/,全稱為 super resolution,用於增強影象的解析度。

viz/,三維視覺化模組。可以認為這個模組實現了乙個簡單的三維視覺化引擎,有各種ui控制項和鍵盤、滑鼠互動方式。底層實現基於 vtk 這個第三方庫。

這些模組的名稱都以 cuda 為開始,cuda 是顯示卡製造商 nvidia 推出的通用計算語言,在cv3中有大量的模組已經被移植到了 cuda 語言。讓我們依次看一下:

cuda/,cuda-加速的計算機視覺演算法,包括資料結構 cuda::gpumat、 基於cuda的相機標定及三維重建等。

cudaarithm/,cuda-加速的矩陣運算模組。

cudafeatures2d/,cuda-加速的特徵檢測與描述模組,與features2d/模組功能類似。

cudafilters/,cuda-加速的影象濾波。

cudaimgproc/,cuda-加速的影象處理演算法,包含直方圖計算、霍夫變換等。

cudaoptflow/,cuda-加速的光流檢測演算法。

cudastereo/,cuda-加速的立體視覺匹配演算法。

cudawarping/,實現了 cuda-加速的快速影象變換,包括透視變換、旋轉、改變尺寸等。

cudaev/,實現 cuda 版本的核心功能,類似 core/ 模組中的基礎演算法。

opencv3程式設計入門

今天進行了簡單的影象修補 影象修補.cpp 先對影象進行破壞,然後進行修補 include stdafx.h include include include includeusing namespace std using namespace cv define win name1 原始圖 defi...

OPENCV3 模版匹配

一 引言 模板匹配的作用在影象識別領域作用可大了。那什麼是模板匹配?模板匹配,就是在一幅影象中尋找另一幅模板影象最匹配 也就是最相似 的部分的技術。說的有點抽象,下面給個例子說明就很明白了。在上面這幅全明星照中,我們想找出姚明頭像的位置,並把它標記出來,可以做到嗎?可以,這就是模板匹配的要做的事情。...

OpenCV3學習總結

影象處理技術一般包括影象壓縮,增強和復原,匹配 描述和識別3個部分。影象處理和計算機視覺的區別在於 影象處理側重於 處理 影象 如增強 還原 去噪 分割等 而計算機視覺重點在於使用計算機來模擬人的視覺。opencv由一系列c函式和c 類構成,擁有包括500多個c函式的跨平台的中高層api。openc...