《Learning OpenCV 3》學習OpenCV 3 範例/電子檔備份 GITHUH: https://github.com/jash-git/Learning-OpenCV-3 資料來源:http://www.1024ebook.com/book/7041 http://file.allitebooks.com/20170108/Learning%20OpenCV%203.pdf https://github.com/oreillymedia/Learning-OpenCV-3_examples Preface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv 1. Overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 What Is OpenCV? 1 Who Uses OpenCV? 2 What Is Computer Vision? 3 The Origin of OpenCV 6 OpenCV Block Diagram 8 Speeding Up OpenCV with IPP 9 Who Owns OpenCV? 10 Downloading and Installing OpenCV 10 Installation 10 Getting the Latest OpenCV via Git 13 More OpenCV Documentation 13 Supplied Documentation 14 Online Documentation and the Wiki 14 OpenCV Contribution Repository 17 Downloading and Building Contributed Modules 17 Portability 18 Summary 19 Exercises 19 2. Introduction to OpenCV. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Include Files 21 Resources 22 First Program—Display a Picture 23 Second Program—Video 25 Moving Around 27 A Simple Transformation 31 A Not-So-Simple Transformation 32 Input from a Camera 35 Writing to an AVI File 36 Summary 38 Exercises 38 3. Getting to Know OpenCV Data Types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 The Basics 41 OpenCV Data Types 41 Overview of the Basic Types 42 Basic Types: Getting Down to Details 44 Helper Objects 52 Utility Functions 60 The Template Structures 67 Summary 68 Exercises 69 4. Images and Large Array Types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 Dynamic and Variable Storage 71 The cv::Mat Class: N-Dimensional Dense Arrays 72 Creating an Array 73 Accessing Array Elements Individually 78 The N-ary Array Iterator: NAryMatIterator 81 Accessing Array Elements by Block 84 Matrix Expressions: Algebra and cv::Mat 85 Saturation Casting 87 More Things an Array Can Do 88 The cv::SparseMat Class: Sparse Arrays 89 Accessing Sparse Array Elements 90 Functions Unique to Sparse Arrays 92 Template Structures for Large Array Types 94 Summary 97 Exercises 97 5. Array Operations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 More Things You Can Do with Arrays 99 cv::abs() 102 cv::absdiff() 103 cv::add() 103 cv::addWeighted() 104 cv::bitwise_and() 106 cv::bitwise_not() 107 cv::bitwise_or() 107 cv::bitwise_xor() 108 cv::calcCovarMatrix() 108 cv::cartToPolar() 110 cv::checkRange() 111 cv::compare() 111 cv::completeSymm() 112 cv::convertScaleAbs() 112 cv::countNonZero() 113 cv::cvarrToMat() 113 cv::dct() 114 cv::dft() 115 cv::cvtColor() 117 cv::determinant() 119 cv::divide() 120 cv::eigen() 120 cv::exp() 121 cv::extractImageCOI() 121 cv::flip() 122 cv::gemm() 122 cv::getConvertElem() and cv::getConvertScaleElem() 123 cv::idct() 124 cv::idft() 124 cv::inRange() 124 cv::insertImageCOI() 125 cv::invert() 126 cv::log() 126 cv::LUT() 127 cv::magnitude() 127 cv::Mahalanobis() 128 cv::max() 129 cv::mean() 130 cv::meanStdDev() 130 cv::merge() 131 cv::min() 131 cv::minMaxIdx() 132 cv::minMaxLoc() 133 cv::mixChannels() 134 cv::mulSpectrums() 136 cv::multiply() 136 cv::mulTransposed() 136 cv::norm() 137 cv::normalize() 139 cv::perspectiveTransform() 140 cv::phase() 141 cv::polarToCart() 142 cv::pow() 142 cv::randu() 143 cv::randn() 143 cv::randShuffle() 144 cv::reduce() 144 cv::repeat() 145 cv::scaleAdd() 146 cv::setIdentity() 146 cv::solve() 147 cv::solveCubic() 148 cv::solvePoly() 149 cv::sort() 149 cv::sortIdx() 149 cv::split() 150 cv::sqrt() 150 cv::subtract() 152 cv::sum() 152 cv::trace() 152 cv::transform() 153 cv::transpose() 153 Summary 154 Exercises 154 6. Drawing and Annotating. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 Drawing Things 157 Line Art and Filled Polygons 158 Fonts and Text 165 Summary 167 Exercises 167 7. Functors in OpenCV. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 Objects That “Do Stuff” 169 Principal Component Analysis (cv::PCA) 169 Singular Value Decomposition (cv::SVD) 173 Random Number Generator (cv::RNG) 176 Summary 179 Exercises 180 8. Image, Video, and Data Files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 HighGUI: Portable Graphics Toolkit 183 Working with Image Files 185 Loading and Saving Images 185 A Note About Codecs 188 Compression and Decompression 188 Working with Video 189 Reading Video with the cv::VideoCapture Object 190 Writing Video with the cv::VideoWriter Object 196 Data Persistence 198 Writing to a cv::FileStorage 198 Reading from a cv::FileStorage 200 cv::FileNode 201 Summary 204 Exercises 204 9. Cross-Platform and Native Windows. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 Working with Windows 207 HighGUI Native Graphical User Interface 208 Working with the Qt Backend 220 Integrating OpenCV with Full GUI Toolkits 232 Summary 247 Exercises 247 10. Filters and Convolution. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249 Overview 249 Before We Begin 249 Filters, Kernels, and Convolution 249 Border Extrapolation and Boundary Conditions 251 Threshold Operations 255 Otsu’s Algorithm 258 Adaptive Threshold 259 Smoothing 261 Simple Blur and the Box Filter 262 Median Filter 265 Gaussian Filter 266 Bilateral Filter 267 Derivatives and Gradients 269 The Sobel Derivative 269 Scharr Filter 272 The Laplacian 273 Image Morphology 275 Dilation and Erosion 276 The General Morphology Function 281 Opening and Closing 281 Morphological Gradient 285 Top Hat and Black Hat 287 Making Your Own Kernel 289 Convolution with an Arbitrary Linear Filter 290 Applying a General Filter with cv::filter2D() 291 Applying a General Separable Filter with cv::sepFilter2D 292 Kernel Builders 292 Summary 294 Exercises 294 11. General Image Transforms. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299 Overview 299 Stretch, Shrink, Warp, and Rotate 299 Uniform Resize 300 Image Pyramids 302 Nonuniform Mappings 306 Affine Transformation 308 Perspective Transformation 313 General Remappings 316 Polar Mappings 317 LogPolar 318 Arbitrary Mappings 322 Image Repair 323 Inpainting 324 Denoising 325 Histogram Equalization 328 cv::equalizeHist(): Contrast equalization 331 Summary 331 Exercises 332 12. Image Analysis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335 Overview 335 Discrete Fourier Transform 336 cv::dft(): The Discrete Fourier Transform 336 cv::idft(): The Inverse Discrete Fourier Transform 339 cv::mulSpectrums(): Spectrum Multiplication 339 Convolution Using Discrete Fourier Transforms 340 cv::dct(): The Discrete Cosine Transform 342 cv::idct(): The Inverse Discrete Cosine Transform 343 Integral Images 343 cv::integral() for Standard Summation Integral 346 cv::integral() for Squared Summation Integral 346 cv::integral() for Tilted Summation Integral 346 The Canny Edge Detector 347 cv::Canny() 349 Hough Transforms 349 Hough Line Transform 349 Hough Circle Transform 354 Distance Transformation 358 cv::distanceTransform() for Unlabeled Distance Transform 359 cv::distanceTransform() for Labeled Distance Transform 360 Segmentation 360 Flood Fill 361 Watershed Algorithm 365 Grabcuts 366 Mean-Shift Segmentation 368 Summary 370 Exercises 371 13. Histograms and Templates. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373 Histogram Representation in OpenCV 376 cv::calcHist(): Creating a Histogram from Data 377 Basic Manipulations with Histograms 380 Histogram Normalization 380 Histogram Threshold 380 Finding the Most Populated Bin 380 Comparing Two Histograms 382 Histogram Usage Examples 385 Some More Sophisticated Histograms Methods 388 Earth Mover’s Distance 389 Back Projection 394 Template Matching 397 Square Difference Matching Method (cv::TM_SQDIFF) 399 Normalized Square Difference Matching Method (cv::TM_SQDIFF_NORMED) 400 Correlation Matching Methods (cv::TM_CCORR) 400 Normalized Cross-Correlation Matching Method (cv::TM_CCORR_NORMED) 400 Correlation Coefficient Matching Methods (cv::TM_CCOEFF) 400 Normalized Correlation Coefficient Matching Method (cv::TM_CCOEFF_NORMED) 401 Summary 404 Exercises 404 14. Contours. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407 Contour Finding 407 Contour Hierarchies 408 Drawing Contours 413 A Contour Example 414 Another Contour Example 416 Fast Connected Component Analysis 417 More to Do with Contours 420 Polygon Approximations 420 Geometry and Summary Characteristics 421 Geometrical Tests 428 Matching Contours and Images 429 Moments 429 More About Moments 431 Matching and Hu Moments 435 Using Shape Context to Compare Shapes 436 Summary 441 Exercises 442 15. Background Subtraction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445 Overview of Background Subtraction 445 Weaknesses of Background Subtraction 446 Scene Modeling 447 A Slice of Pixels 447 Frame Differencing 451 Averaging Background Method 452 Accumulating Means, Variances, and Covariances 458 A More Advanced Background Subtraction Method 467 Structures 470 Learning the Background 472 Learning with Moving Foreground Objects 474 Background Differencing: Finding Foreground Objects 475 Using the Codebook Background Model 477 A Few More Thoughts on Codebook Models 477 Connected Components for Foreground Cleanup 477 A Quick Test 481 Comparing Two Background Methods 483 OpenCV Background Subtraction Encapsulation 485 The cv::BackgroundSubtractor Base Class 485 KaewTraKuPong and Bowden Method 486 Zivkovic Method 488 Summary 490 Exercises 491 16. Keypoints and Descriptors. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493 Keypoints and the Basics of Tracking 493 Corner Finding 494 Introduction to Optical Flow 498 Lucas-Kanade Method for Sparse Optical Flow 500 Generalized Keypoints and Descriptors 511 Optical Flow, Tracking, and Recognition 513 How OpenCV Handles Keypoints and Descriptors, the General Case 514 Core Keypoint Detection Methods 526 Keypoint Filtering 571 Matching Methods 573 Displaying Results 580 Summary 583 Exercises 584 17. Tracking. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587 Concepts in Tracking 587 Dense Optical Flow 588 The Farnebäck Polynomial Expansion Algorithm 589 The Dual TV-L1 Algorithm 592 The Simple Flow Algorithm 596 Mean-Shift and Camshift Tracking 600 Mean-Shift 601 Camshift 604 Motion Templates 605 Estimators 613 The Kalman Filter 615 A Brief Note on the Extended Kalman Filter 633 Summary 634 Exercises 634 18. Camera Models and Calibration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 637 Camera Model 638 The Basics of Projective Geometry 641 Rodrigues Transform 643 Lens Distortions 644 Calibration 648 Rotation Matrix and Translation Vector 650 Calibration Boards 652 Homography 660 Camera Calibration 665 Undistortion 677 Undistortion Maps 678 Converting Undistortion Maps Between Representations with cv::convertMaps() 679 Computing Undistortion Maps with cv::initUndistortRectifyMap() 680 Undistorting an Image with cv::remap() 682 Undistortion with cv::undistort() 683 Sparse Undistortion with cv::undistortPoints() 683 Putting Calibration All Together 684 Summary 687 Exercises 688 19. Projection and Three-Dimensional Vision. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 691 Projections 692 Affine and Perspective Transformations 694 Bird’s-Eye-View Transform Example 695 Three-Dimensional Pose Estimation 700 Pose Estimation from a Single Camera 700 Stereo Imaging 703 Triangulation 704 Epipolar Geometry 708 The Essential and Fundamental Matrices 710 Computing Epipolar Lines 720 Stereo Calibration 721 Stereo Rectification 726 Stereo Correspondence 737 Stereo Calibration, Rectification, and Correspondence Code Example 752 Depth Maps from Three-Dimensional Reprojection 759 Structure from Motion 761 Fitting Lines in Two and Three Dimensions 762 Summary 765 Exercises 766 20. The Basics of Machine Learning in OpenCV. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 769 What Is Machine Learning? 770 Training and Test Sets 770 Supervised and Unsupervised Learning 771 Generative and Discriminative Models 773 OpenCV ML Algorithms 774 Using Machine Learning in Vision 776 Variable Importance 778 Diagnosing Machine Learning Problems 779 Legacy Routines in the ML Library 785 K-Means 786 Mahalanobis Distance 793 Summary 797 Exercises 797 21. StatModel: The Standard Model for Learning in OpenCV. . . . . . . . . . . . . . . . . . . . . . . . . 799 Common Routines in the ML Library 799 Training and the cv::ml::TrainData Structure 802 Prediction 809 Machine Learning Algorithms Using cv::StatModel 810 Naïve/Normal Bayes Classifier 810 Binary Decision Trees 816 Boosting 830 Random Trees 837 Expectation Maximization 842 K-Nearest Neighbors 846 Multilayer Perceptron 849 Support Vector Machine 859 Summary 870 Exercises 871 22. Object Detection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 875 Tree-Based Object Detection Techniques 875 Cascade Classifiers 876 Supervised Learning and Boosting Theory 879 Learning New Objects 888 Object Detection Using Support Vector Machines 897 Latent SVM for Object Detection 898 The Bag of Words Algorithm and Semantic Categorization 901 Summary 907 Exercises 907 23. Future of OpenCV. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 909 Past and Present 909 OpenCV 3.x 910 How Well Did Our Predictions Go Last Time? 911 Future Functions 912 Current GSoC Work 913 Community Contributions 915 OpenCV.org 916 Some AI Speculation 917 Afterword 920 A. Planar Subdivisions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 923 B. opencv_contrib. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 939 C. Calibration Patterns. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 943 Bibliography. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 949 Index. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 967 目錄 譯者序 xvii 前言 xxi 第1章 概述 1 什么是OpenCV 1 OpenCV怎么用 2 什么是計算機視覺 3 OpenCV的起源 6 OpenCV的結搆 7 使用IPP來加速OpenCV 8 誰擁有OpenCV 9 下載和安裝OpenCV 9 安裝 9 從Git獲取最新的OpenCV 12 更多的OpenCV文檔 13 提供的文檔 13 在線文檔和維基資源 13 OpenCV貢獻庫 15 下載和編譯Contributed模塊 16 可移植性 16 小結 17 練習 17 第2章OpenCV初探 19 頭文件 19 資源 20 第一個程序:顯示圖片 21 第二個程序:視頻 23 跳轉 24 簡單的變換 28 不那么簡單的變換 30 從攝像頭中讀取 32 寫入AVI文件 33 小結 34 練習 35 第3章 了解OpenCV的數據類型 37 基礎知識 37 OpenCV的數據類型 37 基礎類型概述 38 深入了解基礎類型 39 輔助對象 46 工具函數 53 模板結搆 60 小結 61 練習 61 第4章 圖像和大型數組類型 63 動態可變的存儲 63 cv::Mat類N維稠密數組 64 創建一個數組 65 獨立獲取數組元素 69 數組迭代器NAryMatIterator 72 通過塊訪問數組元素 74 矩陣表達式:代數和cv::Mat 75 飽和轉換 77 數組還可以做很多事情 78 稀疏數據類cv::SparesMat 79 訪問稀疏數組中的元素 79 稀疏數組中的特有函數 82 為大型數組准備的模板結搆 83 小結 85 練習 86 第5章 矩陣操作 87 矩陣還可以做更多事情 87 cv::abs() 90 cv::add() 91 cv::addWeighted() 92 cv::bitwise_and() 94 cv::bitwise_not() 94 cv::bitwise_or() 94 cv::bitwise_xor() 95 cv::calcCovarMatrix() 95 cv::cartToPolar() 97 cv::checkRange() 97 cv::compare() 98 cv::completeSymm() 99 cv::convertScaleAbs() 99 cv::countNonZero() 100 cv::Mat cv::cvarrToMat() 100 cv::dct() 101 cv::dft() 102 cv::cvtColor() 103 cv::determinant() 106 cv::divide() 106 cv::eigen() 106 cv::exp() 107 cv::extractImageCOI() 107 cv::flip() 108 cv::gemm() 108 cv::getConvertElem()和cv::getConvertScaleElem() 109 cv::idct() 110 cv::inRange() 110 cv::insertImageCOI() 111 cv::invert() 111 cv::log() 112 cv::LUT() 112 cv::Mahalanobis() 113 cv::max() 114 cv::mean() 115 cv::meanStdDev() 116 cv::merge() 116 cv::min() 116 cv::minMaxIdx() 117 cv::minMaxLoc() 118 cv::mixChannels() 119 cv::mulSpectrums() 120 cv::multiply() 121 cv::mulTransposed() 121 cv::norm() 122 cv::normalize() 123 cv::perspectiveTransform() 125 cv::phase() 125 cv::polarToCart() 126 cv::pow() 126 cv::randu() 127 cv::randn() 127 cv::repeat() 129 cv::scaleAdd() 129 cv::setIdentity() 130 cv::solve() 130 cv::solveCubic() 131 cv::solvePoly() 132 cv::sort() 132 cv::sortIdx() 133 cv::split() 133 cv::sqrt() 134 cv::subtract() 135 cv::sum() 135 cv::trace() 135 cv::transform() 136 cv::transpose() 136 小結137 練習137 第6章 繪圖和注釋 139 繪圖139 藝朮線條和填充多邊形 140 字體和文字 146 小結148 練習148 第7章OpenCV中的函數子 151 操作對象 151 主成分分析(cv::PCA) 151 奇異值分解cv::SVD 154 隨機數發生器cv::RNG 157 小結160 練習160 第8章 圖像、視頻與數據文件 163 HighGUI模塊:一個可移植的圖形工具包163 圖像文件的處理 164 圖像的載入與保存 165 關於codecs的一些注釋 167 圖片的編碼與解碼 168 視頻的處理 169 使用cv::VideoCapture對象讀取視頻流 169 使用cv::VideoWriter對象寫入視頻 175 數據存儲 176 cv::FileStorage的寫入 177 使用cv::FileStorage讀取文件 179 cv::FileNode 180 小結183 練習183 第9章 跨平台和Windows系統 187 基於Windows開發 187 HighGUI原生圖形用戶接口 188 通過Qt后端工作 199 綜合OpenCV和全功能GUI工具包 209 小結222 練習222 第10章 濾波與卷積 225 概覽225 預備知識 225 濾波、核和卷積 225 邊界外推和邊界處理 227 閾值化操作 230 Otsu算法 233 自適應閾值 233 平滑235 簡單模糊和方框型濾波器 236 中值濾波器 238 高斯濾波器 239 雙邊濾波器 240 導數和梯度 242 索貝爾導數 242 Scharr濾波器 244 拉普拉斯變換 245 圖像形態學 246 膨脹和腐蝕 247 通用形態學函數 250 開操作和閉操作 251 形態學梯度 254 頂帽和黑帽 256 自定義核 258 用任意線性濾波器做卷積 259 用cv::filter2D()進行卷積 259 通過cv::sepFilter2D使用可分核 260 生成卷積核 260 小結262 練習262 第11章 常見的圖像變換 267 概覽267 拉伸、收縮、扭曲和旋轉 267 均勻調整 268 圖像金字塔 269 不均勻映射 273 仿射變換 274 透視變換 279 通用變換 282 極坐標映射 282 LogPolar 283 任意映射 287 圖像修復 287 圖像修復 288 去噪 289 直方圖均衡化 292 cv::equalizeHist()用於對比均衡 294 小結295 練習295 第12章 圖像分析 297 概覽297 離散傅里葉變換 297 cv::dft()離散傅里葉變換 298 cv::idft()用於離散傅里葉逆變換 300 cv::mulSpectrums()頻譜乘法 300 使用傅里葉變換進行卷積 301 cv::dct()離散余弦變換 303 cv::idct()離散余弦逆變換 304 積分圖 304 cv::integral()標准求和積分 306 cv::integral()平方求和積分 306 cv::integral()傾斜求和積分 307 Canny邊緣檢測 307 cv::Canny() 309 Hough變換 309 Hough線變換 309 Hough圓變換 313 距離變換 316 cv::distanceTransform()無標記距離變換 317 cv::distanceTransform()有標記距離變換 317 分割318 漫水填充 318 分水嶺算法 322 Grabcuts算法 323 Mean-Shift分割算法 325 小結326 練習326 第13章 直方圖和模板 329 OpenCV中直方圖的表示 331 cv::calcHist():從數據創建直方圖 332 基本直方圖操作 334 直方圖歸一化 334 直方圖二值化 335 找出最顯著的區間 335 比較兩個直方圖 337 直方圖用法示例 339 一些復雜的直方圖方法 342 EMD距離 342 反向投影 347 模板匹配 350 方差匹配方法(cv::TM_SQDIFF) 351 歸一化方差匹配方法(cv::TM_SQDIFF_NORMED) 352 相關性匹配方法(cv::TM_CCORR)352 歸一化的互相關匹配方法(cv::TM_CCORR_NORMED) 352 相關系數匹配方法(cv::TM_CCOEFF) 352 歸一化的相關系數匹配方法(cv::TM_CCOEFF_NORMED) 352 小結355 練習355 第14章 輪廓 359 輪廓查找 359 輪廓層次 360 繪制輪廓 364 輪廓實例 365 另一個輪廓實例 366 快速連通區域分析 368 深入分析輪廓 370 多邊形逼近 370 几何及特性概括 372 几何學測試 377 匹配輪廓與圖像 378 矩 378 再論矩 380 使用Hu矩進行匹配 383 利用形狀場景方法比較輪廓 384 小結388 練習389 第15章 背景提取 391 背景提取概述 391 背景提取的缺點 392 場景建模 392 像素 393 幀間差分 396 平均背景法 397 累計均值,方差和協方差 403 更復雜的背景提取方法 410 結搆 413 進行背景學習 414 存在移動的前景物體時進行背景學習417 背景差分:檢測前景物體 418 使用碼書法的背景模型 419 關於碼書法的其他想法 419 使用連通分量進行前景清理 420 小測試 423 兩種背景方法的對比 425 OpenCV中的背景提取方法的封裝 425 cv::BackgroundSubstractor基類 426 KB方法 427 Zivkovic方法 428 小結431 練習431 第16章 關鍵點和描述子 433 關鍵點和跟蹤基礎 433 角點檢測 434 光流簡介 437 Lucas-Kanade稀疏光流法 438 廣義關鍵點和描述符 448 光流,跟蹤和識別 450 OpenCV一般如何處理關鍵點和描述符 451 核心關鍵點檢測方法 461 關鍵點過濾 497 匹配方法 499 結果顯示 505 小結508 練習508 第17章 跟蹤 511 跟蹤中的概念 511 稠密光流 512 Farneback多項式擴展算法 513 Dual TV-L1模型 515 簡單光流算法 519 Mean-Shift算法和Camshift追蹤 522 Mean-Shift算法 522 Camshift 526 **模板 526 估計533 卡爾曼濾波器 534 擴展卡爾曼濾波器簡述 549 小結551 練習551 第18章 相機模型與標定 553 相機模型 554 射影几何基礎 556 Rodrigues變換 558 透鏡畸變 559 標定562 旋轉矩陣和平移向量 563 標定板 566 單應性 572 相機標定 576 矯正587 矯正映射 587 使用cv::convertMaps()在不同表示方式之間轉換矯正映射 588 使用cv::initUndistortRectifyMap()計算矯正映射 589 使用cv::remap()矯正圖像 591 使用cv::undistort()進行矯正 591 使用cv::undistortPoints()進行稀疏矯正 591 與標定結合 592 小結595 練習596 第19章 投影與三維視覺 599 投影600 仿射變換與透視變換 601 鳥瞰圖變換實例 602 三維姿態估計 606 單攝像機姿態估計 607 立體成像 609 三角測量 610 對極几何 613 本徵矩陣和基本矩陣 615 計算極線 624 立體校正 624 立體校正 628 立體匹配 638 立體校正、標定和對應的示例代碼 650 來自三維重投影的深度映射 657 來自**的結搆 659 二維與三維直線擬合 659 小結662 練習662 第20章 機器學習基礎 665 什么是機器學習 665 訓練集和測試集 666 有監督學習和無監督學習 667 生成式模型和判別式模型 669 OpenCV機器學習算法 669 機器學習在視覺中的應用 671 變量的重要性 673 診斷機器學習中的問題 674 ML庫中遺留的機器學習算法 678 K均值 679 馬氏距離 684 小結687 練習687 第21章StatModel:OpenCV中的基准學習模型 689 ML庫中的常見例程 689 訓練方法和cv::ml::TrainData的結搆 691 預測 697 使用cv::StatModel的機器學習算法 698 朴素貝葉斯分類器 699 二叉決策樹 703 Boosting方法 716 隨機森林 721 期望最大化算法 725 K近鄰算法 729 多層感知機 731 支持向量機 739 小結749 練習750 第22章 目標檢測 753 基於樹的目標檢測技朮 753 級聯分類器 754 有監督學習和boosting理論 756 學習新目標 764 使用支持向量機的目標識別 772 Latent SVM用於目標識別 772 Bag of Words算法與語義分類 775 小結780 練習780 第23章OpenCV的未來 783 過去與未來 783 OpenCV 3.x 784 我們上一次預測怎么樣? 784 未來應用 785 目前GSoC的進展 787 社區貢獻 788 OpenCV.org 789 一些關於AI的猜測 790 結語793 附錄A平面划分 795 附錄B opencv_contrib模塊概述 809 附錄C標定圖案 813 參考文獻 819 https://detail.tmall.com/item.htm?spm=a230r.1.14.68.6dea79aaby6EG3&id=574723794426&ns=1&abbucket=3