《OpenCV3編程入門》書本配套源代碼

《OpenCV3編程入門》書本配套源代碼

《OpenCV3編程入門》書本配套源代碼


資料來源: https://github.com/QianMo/OpenCV3-Intro-Book-Src


第一個快速上手OpenCV

    1    OpenCV環境配置的測試用例    1.3.8
    2    快速上手OpenCV的第一個程式:圖像顯示    1.4.1
    3    快速上手OpenCV的第二個程式:圖像腐蝕    1.4.2
    4    快速上手OpenCV的第三個程式:blur圖像模糊    1.4.3
    5    快速上手OpenCV的第四個程式:canny邊緣檢測    1.4.4
    6    讀取並播放視頻    1.5.1
    7    調用攝像頭採集圖像    1.5.2
    8    官方常式引導、賞析之彩色目標跟蹤:Camshift    2.1.1
    9    官方常式引導、賞析之光流:optical flow    2.1.2
    10    官方常式引導、賞析之點追蹤:lkdemo    2.1.3
    11    官方常式引導、賞析之人臉識別:objectDetection    2.1.4
    12    官方常式引導、賞析之支援向量機:支持向量機引導    2.1.5
    13    官方常式引導、賞析之支援向量機:處理線性不可分數據    2.1.5
    14    printf函數的用法示例    2.6.2
    15    用imwrite函數生成png透明圖    3.1.8
    16    綜合示例程式:圖像的載入、顯示與輸出    3.1.9
    17    為程式介面添加滑動條    3.2.1
    18    滑鼠操作示例    3.3
    
第二部分初探核心組件
    19    基礎圖像容器Mat類的使用    4.1.7
    20    用OpenCV進行基本繪圖    4.3
    21    操作圖像中圖元的方法一:用指標訪問圖元    5.1.5、5.1.6
    22    操作圖像中圖元的方法二:用反覆運算器操作圖元    5.1.5、5.1.6
    23    操作圖像中圖元的方法三:動態位址計算    5.1.5、5.1.6
    24    遍歷圖像中圖元的14種方法    5.1.6
    25    初級圖像混合    5.2.4
    26    多通道圖像混合    5.3.3
    27    圖像對比度、亮度值調整    5.4.3
    28    離散傅裡葉變換    5.5.8
    29    XML和YAML文件的寫入    5.6.3
    30    XML和YAML文件的讀取    5.6.4、

第三部分掌握imgproc組件
    31    方框濾波:boxFilter函數的使用    6.1.11
    32    均值濾波:blur函數的使用    6.1.11
    33    高斯濾波:GaussianBlur函數的使用    6.1.11
    34    綜合示例:圖像線性濾波    6.1.12
    35    中值濾波:medianBlur函數的使用    6.2.4
    36    雙邊濾波:bilateralFilter函數的使用    6.2.4
    37    綜合示例:圖像濾波    6.2.5
    38    膨脹:dilate函數的使用    6.3.5
    39    腐蝕:erode函數的使用    6.3.5
    40    綜合示例:腐蝕與膨脹    6.3.6
    41    用morphologyEx()函數實現形態學膨脹    6.4.8
    42    用morphologyEx()函數實現形態學腐蝕    6.4.8
    43    用morphologyEx()函數實現形態學開運算    6.4.8
    44    用morphologyEx()函數實現形態學閉運算    6.4.8
    45    用morphologyEx()函數實現形態學梯度    6.4.8
    46    用morphologyEx()函數實現形態學“頂帽”    6.4.8
    47    用morphologyEx()函數實現形態學“黑帽”    6.4.8
    48    綜合示例:形態學濾波    6.4.9
    49    漫水填充演算法:floodFill函數    6.5.3
    50    綜合示例:漫水填充    6.5.4
    51    尺寸調整:resize()函數的使用    6.6.5
    52    向上採樣圖像金字塔:pyrUp()函數的使用    6.6.6
    53    向下採樣圖像金字塔:pyrDown()函數的使用    6.6.6
    54    綜合示例:圖像金字塔與圖片尺寸縮放    6.6.7
    55    示例程式:基本閾值操作    6.7.3
    56    Canny邊緣檢測    7.1.2
    57    Sobel 運算元的使用    7.1.3
    58    Laplacian運算元的使用    7.1.4
    59    Scharr濾波器    7.1.5
    60    綜合示例:邊緣檢測    7.1.6
    61    標準霍夫變換:HoughLines()函數的使用    7.2.4
    62    累計概率霍夫變換:HoughLinesP()函數    7.2.5
    63    霍夫圓變換:HoughCircles()函數    7.2.8
    64    綜合示例:霍夫變換    7.2.9
    65    實現重映射:remap()函數    7.3.3
    66    綜合示例程式:實現多種重映射    7.3.4
    67    仿射變換    7.4.5
    68    長條圖均衡化    7.5.3
    69    輪廓查找    8.1.3
    70    查找並繪製輪廓    8.1.4
    71    凸包檢測基礎    8.2.3
    72    尋找和繪製物體的凸包    8.2.4
    73    創建包圍輪廓的矩形邊界    8.3.6
    74    創建包圍輪廓的圓形邊界    8.3.7
    75    使用多邊形包圍輪廓    8.3.8
    76    圖像輪廓矩    8.4.4
    77    分水嶺演算法的使用    8.5.2
    78    實現圖像修補    8.6.2
    79    H-S二維長條圖的繪製    9.2.3
    80    一維長條圖的繪製    9.2.4
    81    RGB三色長條圖的繪製    9.2.5
    82    長條圖對比    9.3.2
    83    反向投影    9.4.7
    84    範本匹配    9.5.3
    
第四部分深入featrue2d組件
    85    實現Harris角點檢測:cornerHarris()函數的使用    10.1.4
    86    harris角點檢測與繪製    10.1.5
    87    Shi-Tomasi角點檢測    10.2.3
    88    亞圖元級角點檢測    10.3.3
    89    SURF特徵點檢測    11.1.6
    90    SURF特徵提取    11.2.3
    91    使用FLANN進行特徵點匹配    11.3.3
    92    FLANN結合SURF進行關鍵點的描述和匹配    11.3.4
    93    SIFT配合暴力匹配進行關鍵點描述和提取    11.3.5
    94    尋找已知物體    11.4.3
    95    利用ORB演算法進行關鍵點的描述與匹配    11.5.4
    
額外的附贈程式說明
除了書本奇蹟的示例程式之外,附加了OpenCV2版本的21個更適合於正文主線的示例代碼更簡單的一些源代碼。現在將附加的21個示例程式程式如下:
    1    隨機圖形和文字生成示例(randomtext)
    2    生成彩色色條(gencolors)    
    3    卡爾曼濾波(kalman)    
    4    漸變過渡各種圖形濾波(median_blur)
    5    距離變換(distanceTransform)
    6    把影像對應到極指數空間(Log Polar)
    7    filter2D濾波器的用法    
    8    grabCut圖像分割示例    
    9    MeanShift圖像分割示例
    10    用滑動控制圖像長條圖
    11    找到圖像最小的封閉輪廓
    12    Retina特徵點檢測
    13    攝像頭幀數檢測
    14    視頻截圖
    15    對視頻的快速角點檢測
    16    視頻簡單色彩檢測
    17    跟蹤分割視頻中運動的物體
    18    視頻的長條圖反向投影。
    19    計算視頻中兩個圖像區域的相似度
    20    視頻前後背景分離
    21    用高斯背景建模分離背景

One thought on “《OpenCV3編程入門》書本配套源代碼

  1. OpenCV3編程入門
    目錄
    第一部分 快速上手OpenCV 1
    第1章 邂逅OpenCV 3
    1.1 OpenCV周邊概念認知 4
    1.1.1 圖像處理、計算機視覺與OpenCV 4
    1.1.2 OpenCV概述 4
    1.1.3 起源及發展 5
    1.1.4 應用概述 6
    1.2 OpenCV基本架構分析 7
    1.3 OpenCV3帶來了什麽 11
    1.3.1 項目架構的改變 11
    1.3.2 將OpenCV2代碼升級到OpenCV3報錯時的一些策略 12
    1.4 OpenCV的下載、安裝與配置 14
    1.4.1 預準備:下載和安裝集成開發環境 14
    1.4.2 第一步:下載和安裝OpenCV SDK 15
    1.4.3 第二步:配置環境變量 16
    1.4.4 第三步:工程包含(include)目錄的配置 17
    1.4.5 第四步:工程庫(lib)目錄的配置 21
    1.4.6 第五步:鏈接庫的配置 22
    1.4.7 第六步:在Windows文件夾下加入OpenCV動態鏈接庫 25
    1.4.8 第七步:最終測試 26
    1.4.9 可能遇到的問題和解決方案 27
    1.5 快速上手OpenCV圖像處理 28
    1.5.1 第一個程序:圖像顯示 29
    1.5.2 第二個程序:圖像腐蝕 30
    1.5.3 第三個程序:圖像模糊 31
    1.5.4 第四個程序:canny邊緣檢測 32
    1.6 OpenCV視頻操作基礎 34
    1.6.1 讀取並播放視頻 34
    1.6.2 調用攝像頭采集圖像 35
    1.7 本章小結 38
    第2章 啟程前的認知準備 39
    2.1 OpenCV官方例程引導與賞析 40
    2.1.1 彩色目標跟蹤:Camshift 41
    2.1.2 光流:optical flow 42
    2.1.3 點追蹤:lkdemo 43
    2.1.4 人臉識別:objectDetection 43
    2.1.5 支持向量機引導 44
    2.2 開源的魅力:編譯OpenCV源代碼 45
    2.2.1 下載安裝CMake 45
    2.2.2 使用CMake生成OpenCV源代碼工程的解決方案 46
    2.2.3 編譯OpenCV源代碼 50
    2.3 “opencv.hpp”頭文件認知 53
    2.4 命名規範約定 54
    2.5 argc與argv參數解惑 56
    2.5.1 初識main函數中的argc和argv 56
    2.5.2 argc、argv的具體含義 57
    2.5.3 Visual Studio中main函數的幾種寫法說明 58
    2.5.4 總結 59
    2.6 格式輸出函數printf()簡析 59
    2.6.1 格式輸出:printf()函數 59
    2.6.2 示例程序:printf函數的用法示例 60
    2.7 智能顯示當前使用的OpenCV版本 61
    2.8 本章小結 61
    第3章 HighGUI圖形用戶界面初步 63
    3.1 圖像的載入、顯示和輸出到文件 64
    3.1.1 OpenCV的命名空間 64
    3.1.2 Mat類簡析 64
    3.1.3 圖像的載入與顯示概述 65
    3.1.4 圖像的載入:imread()函數 65
    3.1.5 圖像的顯示:imshow()函數 66
    3.1.6 關於InputArray類型 67
    3.1.7 創建窗口:namedWindow()函數 67
    3.1.8 輸出圖像到文件:imwrite()函數 68
    3.1.9 綜合示例程序:圖像的載入、顯示與輸出 70
    3.2 滑動條的創建和使用 73
    3.2.1 創建滑動條:createTrackbar()函數 73
    3.2.2 獲取當前軌跡條的位置:getTrackbarPos()函數 76
    3.3 鼠標操作 76
    3.4 本章小結 80
    第二部分 初探core組件 83
    第4章 OpenCV數據結構與基本繪圖 85
    4.1 基礎圖像容器Mat 86
    4.1.1 數字圖像存儲概述 86
    4.1.2 Mat結構的使用 86
    4.1.3 像素值的存儲方法 88
    4.1.4 顯式創建Mat對象的七種方法 89
    4.1.5 OpenCV中的格式化輸出方法 91
    4.1.6 輸出其他常用數據結構 94
    4.1.7 示例程序:基礎圖像容器Mat類的使用 95
    4.2 常用數據結構和函數 95
    4.2.1 點的表示:Point類 96
    4.2.2 顏色的表示:Scalar類 96
    4.2.3 尺寸的表示:Size類 96
    4.2.4 矩形的表示:Rect類 97
    4.2.5 顏色空間轉換:cvtColor()函數 98
    4.2.6 其他常用的知識點 100
    4.3 基本圖形的繪制 100
    4.3.1 DrawEllipse()函數的寫法 101
    4.3.2 DrawFilledCircle()函數的寫法 102
    4.3.3 DrawPolygon()函數的寫法 102
    4.3.4 DrawLine()函數的寫法 103
    4.3.5 main函數的寫法 104
    4.4 本章小結 106
    第5章 core組件進階 107
    5.1 訪問圖像中的像素 108
    5.1.1 圖像在內存之中的存儲方式 108
    5.1.2 顏色空間縮減 108
    5.1.3 LUT函數:Look up table操作 109
    5.1.4 計時函數 110
    5.1.5 訪問圖像中像素的三類方法 110
    5.1.6 示例程序 114
    5.2 ROI區域圖像疊加&圖像混合 114
    5.2.1 感興趣區域:ROI 115
    5.2.2 線性混合操作 116
    5.2.3 計算數組加權和:addWeighted()函數 117
    5.2.4 綜合示例:初級圖像混合 120
    5.3 分離顏色通道、多通道圖像混合 125
    5.3.1 通道分離:split()函數 125
    5.3.2 通道合並:merge()函數 126
    5.3.3 示例程序:多通道圖像混合 127
    5.4 圖像對比度、亮度值調整 131
    5.4.1 理論依據 131
    5.4.2 訪問圖片中的像素 131
    5.4.3 示例程序:圖像對比度、亮度值調整 132
    5.5 離散傅裏葉變換 135
    5.5.1 離散傅裏葉變換的原理 135
    5.5.2 dft()函數詳解 136
    5.5.3 返回DFT最優尺寸大小:getOptimalDFTSize()函數 137
    5.5.4 擴充圖像邊界:copyMakeBorder()函數 137
    5.5.5 計算二維矢量的幅值:magnitude()函數 138
    5.5.6 計算自然對數:log()函數 138
    5.5.7 矩陣歸一化:normalize()函數 138
    5.5.8 示例程序:離散傅裏葉變換 139
    5.6 輸入輸出XML和YAML文件 144
    5.6.1 XML和YAML文件簡介 144
    5.6.2 FileStorage類操作文件的使用引導 144
    5.6.3 示例程序:XML和YAML文件的寫入 147
    5.6.4 示例程序:XML和YAML文件的讀取 148
    5.7 本章小結 150
    第三部分 掌握imgproc組件 151
    第6章 圖像處理 153
    6.1 線性濾波:方框濾波、均值濾波、高斯濾波 154
    6.1.1 平滑處理 154
    6.1.2 圖像濾波與濾波器 154
    6.1.3 線性濾波器的簡介 155
    6.1.4 濾波和模糊 155
    6.1.5 鄰域算子與線性鄰域濾波 155
    6.1.6 方框濾波(box Filter) 156
    6.1.7 均值濾波 157
    6.1.8 高斯濾波 159
    6.1.9 線性濾波相關OpenCV源碼剖析 160
    6.1.10 OpenCV中GaussianBlur函數源碼剖析 164
    6.1.11 線性濾波核心API函數 165
    6.1.12 圖像線性濾波綜合示例 170
    6.2 非線性濾波:中值濾波、雙邊濾波 175
    6.2.1 非線性濾波概述 175
    6.2.2 中值濾波 175
    6.2.3 雙邊濾波 177
    6.2.4 非線性濾波相關核心API函數 178
    6.2.5 OpenCV中的5種圖像濾波綜合示例 181
    6.3 形態學濾波(1):腐蝕與膨脹 187
    6.3.1 形態學概述 187
    6.3.2 膨脹 188
    6.3.3 腐蝕 189
    6.3.4 相關OpenCV源碼分析溯源 190
    6.3.5 相關核心API函數講解 191
    6.3.6 綜合示例:腐蝕與膨脹 195
    6.4 形態學濾波(2):開運算、閉運算、形態學梯度、頂帽、黑帽 198
    6.4.1 開運算 199
    6.4.2 閉運算 200
    6.4.3 形態學梯度 200
    6.4.4 頂帽 201
    6.4.5 黑帽 202
    6.4.6 形態學濾波OpenCV源碼分析溯源 203
    6.4.7 核心API函數:morphologyEx() 205
    6.4.8 各形態學操作使用範例一覽 206
    6.4.9 綜合示例:形態學濾波 208
    6.5 漫水填充 214
    6.5.1 漫水填充的定義 214
    6.5.2 漫水填充法的基本思想 214
    6.5.3 實現漫水填充算法:floodFill函數 214
    6.5.4 綜合示例:漫水填充 216
    6.6 圖像金字塔與圖片尺寸縮放 223
    6.6.1 引言 223
    6.6.2 關於圖像金字塔 223
    6.6.3 高斯金字塔 225
    6.6.4 拉普拉斯金字塔 226
    6.6.5 尺寸調整:resize()函數 227
    6.6.6 圖像金字塔相關API函數 230
    6.6.7 綜合示例:圖像金字塔與圖片尺寸縮放 234
    6.7 閾值化 237
    6.7.1 固定閾值操作:Threshold()函數 238
    6.7.2 自適應閾值操作:adaptiveThreshold()函數 239
    6.7.3 示例程序:基本閾值操作 240
    6.8 本章小結 244
    第7章 圖像變換 247
    7.1 基於OpenCV的邊緣檢測 248
    7.1.1 邊緣檢測的一般步驟 248
    7.1.2 canny算子 248
    7.1.3 sobel算子 253
    7.1.4 Laplacian 算子 256
    7.1.5 scharr濾波器 259
    7.1.6 綜合示例:邊緣檢測 262
    7.2 霍夫變換 267
    7.2.1 霍夫變換概述 267
    7.2.2 OpenCV中的霍夫線變換 268
    7.2.3 霍夫線變換的原理 268
    7.2.4 標準霍夫變換:HoughLines()函數 270
    7.2.5 累計概率霍夫變換:HoughLinesP()函數 272
    7.2.6 霍夫圓變換 274
    7.2.7 霍夫梯度法的原理 275
    7.2.8 霍夫梯度法的缺點 276
    7.2.9 霍夫圓變換:HoughCircles()函數 276
    7.2.10 綜合示例:霍夫變換 278
    7.3 重映射 281
    7.3.1 重映射的概念 281
    7.3.2 實現重映射:remap()函數 282
    7.3.3 基礎示例程序:基本重映射 283
    7.3.4 綜合示例程序:實現多種重映射 285
    7.4 仿射變換 289
    7.4.1 認識仿射變換 289
    7.4.2 仿射變換的求法 290
    7.4.3 進行仿射變換:warpAffine()函數 291
    7.4.4 計算二維旋轉變換矩陣:getRotationMatrix2D()函數 292
    7.4.5 示例程序:仿射變換 292
    7.5 直方圖均衡化 295
    7.5.1 直方圖均衡化的概念和特點 296
    7.5.2 實現直方圖均衡化:equalizeHist()函數 297
    7.5.3 示例程序:直方圖均衡化 298
    7.6 本章小結 300
    第8章 圖像輪廓與圖像分割修復 303
    8.1 查找並繪制輪廓 304
    8.1.1 尋找輪廓:findContours()函數 304
    8.1.2 繪制輪廓:drawContours()函數 305
    8.1.3 基礎示例程序:輪廓查找 306
    8.1.4 綜合示例程序:查找並繪制輪廓 308
    8.2 尋找物體的凸包 312
    8.2.1 凸包 312
    8.2.2 尋找凸包:convexHull()函數 313
    8.2.3 基礎示例程序:凸包檢測基礎 313
    8.2.4 綜合示例程序:尋找和繪制物體的凸包 315
    8.3 使用多邊形將輪廓包圍 318
    8.3.1 返回外部矩形邊界:boundingRect()函數 318
    8.3.2 尋找最小包圍矩形:minAreaRect()函數 318
    8.3.3 尋找最小包圍圓形:minEnclosingCircle()函數 318
    8.3.4 用橢圓擬合二維點集:fitEllipse()函數 319
    8.3.5 逼近多邊形曲線:approxPolyDP()函數 319
    8.3.6 基礎示例程序:創建包圍輪廓的矩形邊界 319
    8.3.7 基礎示例程序:創建包圍輪廓的圓形邊界 321
    8.3.8 綜合示例程序:使用多邊形包圍輪廓 324
    8.4 圖像的矩 327
    8.4.1 矩的計算:moments()函數 328
    8.4.2 計算輪廓面積:contourArea()函數 328
    8.4.3 計算輪廓長度:arcLength()函數 328
    8.4.4 綜合示例程序:查找和繪制圖像輪廓矩 329
    8.5 分水嶺算法 333
    8.5.1 實現分水嶺算法:watershed()函數 334
    8.5.2 綜合示例程序:分水嶺算法 334
    8.6 圖像修補 338
    8.6.1 實現圖像修補:inpaint()函數 340
    8.6.2 綜合示例程序:圖像修補 341
    8.7 本章小結 343
    第9章 直方圖與匹配 345
    9.1 圖像直方圖概述 346
    9.2 直方圖的計算與繪制 347
    9.2.1 計算直方圖:calcHist()函數 347
    9.2.2 找尋最值:minMaxLoc()函數 348
    9.2.3 示例程序:繪制H—S直方圖 348
    9.2.4 示例程序:計算並繪制圖像一維直方圖 350
    9.2.5 示例程序:繪制RGB三色直方圖 352
    9.3 直方圖對比 355
    9.3.1 對比直方圖:compareHist()函數 355
    9.3.2 示例程序:直方圖對比 356
    9.4 反向投影 360
    9.4.1 引言 360
    9.4.2 反向投影的工作原理 360
    9.4.3 反向投影的作用 361
    9.4.4 反向投影的結果 361
    9.4.5 計算反向投影:calcBackProject()函數 361
    9.4.6 通道復制:mixChannels()函數 362
    9.4.7 綜合程序:反向投影 363
    9.5 模板匹配 367
    9.5.1 模板匹配的概念與原理 367
    9.5.2 實現模板匹配:matchTemplate()函數 367
    9.5.3 綜合示例:模板匹配 369
    9.6 本章小結 373
    第四部分 深入feature2d組件 375
    第10章 角點檢測 377
    10.1 Harris角點檢測 378
    10.1.1 興趣點與角點 378
    10.1.2 角點檢測 378
    10.1.3 harris角點檢測 379
    10.1.4 實現Harris角點檢測:cornerHarris()函數 379
    10.1.5 綜合示例:harris角點檢測與繪制 381
    10.2 Shi-Tomasi角點檢測 384
    10.2.1 Shi-Tomasi角點檢測概述 384
    10.2.2 確定圖像強角點:goodFeaturesToTrack()函數 384
    10.2.3 綜合示例:Shi-Tomasi角點檢測 385
    10.3 亞像素級角點檢測 388
    10.3.1 背景概述 388
    10.3.2 尋找亞像素角點:cornerSubPix()函數 389
    10.3.3 綜合示例:亞像素級角點檢測 389
    10.4 本章小結 392
    第11章 特征檢測與匹配 395
    11.1 SURF特征點檢測 396
    11.1.1 SURF算法概覽 396
    11.1.2 SURF算法原理 396
    11.1.3 SURF類相關OpenCV源碼剖析 400
    11.1.4 繪制關鍵點:drawKeypoints()函數 401
    11.1.5 KeyPoint類 402
    11.1.6 示例程序:SURF特征點檢測 402
    11.2 SURF特征提取 405
    11.2.1 繪制匹配點:drawMatches()函數 405
    11.2.2 BruteForceMatcher類源碼分析 407
    11.2.3 示例程序:SURF特征提取 408
    11.3 使用FLANN進行特征點匹配 410
    11.3.1 FlannBasedMatcher類的簡單分析 410
    11.3.2 找到最佳匹配:DescriptorMatcher::match方法 411
    11.3.3 示例程序: 使用FLANN進行特征點匹配 411
    11.3.4 綜合示例程序:FLANN結合SURF進行關鍵點的描述和匹配 413
    11.3.5 綜合示例程序:SIFT配合暴力匹配進行關鍵點描述和提取 417
    11.4 尋找已知物體 420
    11.4.1 尋找透視變換:findHomography()函數 421
    11.4.2 進行透視矩陣變換:perspectiveTransform()函數 421
    11.4.3 示例程序: 尋找已知物體 422
    11.5 ORB特征提取 425
    11.5.1 ORB算法概述 425
    11.5.2 相關概念認知 425
    11.5.3 ORB類相關源碼簡單分析 426
    11.5.4 示例程序:ORB算法描述與匹配 426
    11.6 本章小結 430
    附錄 433
    A1 配套示例程序清單 433
    A2 隨書額外附贈的程序一覽 436
    A3 書本核心函數清單 439
    A4 Mat類函數一覽 442
    A4.1 構造函數:Mat::Mat 442
    A4.2 析構函數Mat::~Mat 444
    A4.3 Mat類成員函數 444

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *