OpenCV輕松入門:面向Python(第2版)( 簡體 字) | |
作者:李立宗 | 類別:1. -> 教材 -> 數位影像處理 2. -> 程式設計 -> Python |
出版社:電子工業出版社 | 3dWoo書號: 56336 詢問書籍請說出此書號! 有庫存 NT售價: 700 元 |
出版日:6/1/2023 | |
頁數:584 | |
光碟數:0 | |
站長推薦: | |
印刷:黑白印刷 | 語系: ( 簡體 字 ) |
ISBN:9787121455995 | 加入購物車 │加到我的最愛 (請先登入會員) |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社) | |
第1章 OpenCV入門 1
1.1 如何使用 1 1.2 圖像處理基本操作 3 1.2.1 讀取圖像 4 1.2.2 顯示圖像 5 1.2.3 保存圖像 10 1.3 OpenCV貢獻庫 10 第2章 圖像處理基礎 12 2.1 圖像的基本表示方法 12 2.2 像素處理 16 2.3 使用numpy.array訪問像素 24 2.4 感興趣區域(ROI) 30 2.5 通道操作 32 2.5.1 通道拆分 33 2.5.2 通道合并 35 2.6 獲取圖像屬性 36 第3章 圖像運算 38 3.1 圖像加法運算 38 3.1.1 加號運算符 38 3.1.2 cv2.add()函數 39 3.2 圖像加權和 42 3.3 按位邏輯運算 44 3.3.1 按位與運算 44 3.3.2 按位或運算 48 3.3.3 按位非運算 49 3.3.4 按位異或運算 50 3.4 掩膜 51 3.5 圖像與數值的運算 54 3.6 位平面分解 56 3.7 圖像加密和解密 62 3.8 數字水印 66 3.8.1 原理 67 3.8.2 實現方法 70 3.8.3 例題 77 3.9 臉部打碼及解碼 78 3.9.1 按位與方式 78 3.9.2 ROI方式 82 第4章 色彩空間類型轉換 85 4.1 色彩空間基礎 85 4.1.1 GRAY色彩空間 85 4.1.2 XYZ色彩空間 86 4.1.3 YCrCb色彩空間 86 4.1.4 HSV色彩空間 87 4.1.5 HLS色彩空間 88 4.1.6 CIEL*a*b*色彩空間 89 4.1.7 CIEL*u*v*色彩空間 90 4.1.8 Bayer色彩空間 90 4.2 類型轉換函數 92 4.3 類型轉換實例 98 4.3.1 通過數組觀察轉換效果 98 4.3.2 圖像處理實例 102 4.4 HSV色彩空間討論 104 4.4.1 基礎知識 104 4.4.2 獲取指定顏色 105 4.4.3 標記指定顏色 107 4.4.4 標記膚色 111 4.4.5 實現藝術效果 112 4.5 alpha通道 113 第5章 幾何變換 117 5.1 縮放 117 5.2 翻轉 121 5.3 仿射 122 5.3.1 平移 123 5.3.2 旋轉 124 5.3.3 更復雜的仿射變換 125 5.4 透視 126 5.5 重映射 128 5.5.1 映射參數的理解 129 5.5.2 復制 130 5.5.3 繞x軸翻轉 132 5.5.4 繞y軸翻轉 134 5.5.5 繞x軸、y軸翻轉 136 5.5.6 x軸、y軸互換 138 5.5.7 圖像縮放 140 第6章 閾值處理 141 6.1 threshold函數 141 6.1.1 二值化閾值處理(cv2.THRESH_BINARY) 142 6.1.2 反二值化閾值處理(cv2.THRESH_BINARY_INV) 144 6.1.3 截斷閾值化處理(cv2.THRESH_TRUNC) 146 6.1.4 超閾值零處理(cv2.THRESH_TOZERO_INV) 147 6.1.5 低閾值零處理(cv2.THRESH_TOZERO) 149 6.2 Otsu處理 150 6.3 自適應閾值處理 153 第7章 圖像平滑處理 157 7.1 均值濾波 159 7.1.1 基本原理 159 7.1.2 函數語法 166 7.1.3 程序示例 167 7.2 方框濾波 168 7.2.1 基本原理 169 7.2.2 函數語法 169 7.2.3 程序示例 171 7.3 高斯濾波 176 7.3.1 基本原理 176 7.3.2 函數語法 177 7.3.3 程序示例 179 7.4 中值濾波 180 7.4.1 基本原理 180 7.4.2 函數語法 181 7.4.3 程序示例 181 7.5 雙邊濾波 182 7.5.1 基本原理 182 7.5.2 函數語法 184 7.5.3 程序示例 185 7.6 2D卷積 186 第8章 形態學操作 189 8.1 腐蝕 189 8.2 膨脹 194 8.3 通用形態學函數 199 8.4 開運算 199 8.5 閉運算 201 8.6 形態學梯度運算 203 8.7 禮帽運算 204 8.8 黑帽運算 205 8.9 核函數 207 第9章 圖像梯度 210 9.1 卷積基礎 210 9.2 Sobel理論基礎 214 9.3 Sobel算子及函數使用 216 9.3.1 參數ddepth 217 9.3.2 方向 221 9.3.3 實例 223 9.4 Scharr算子及函數使用 226 9.5 Sobel算子和Scharr算子的比較 231 9.6 Laplacian算子及函數使用 232 9.7 算子總結 234 第10章 Canny邊緣檢測 235 10.1 Canny邊緣檢測基礎 235 10.2 Canny函數及使用 239 第11章 圖像金字塔 241 11.1 理論基礎 241 11.2 pyrDown函數及使用 243 11.3 pyrUp函數及使用 245 11.4 采樣可逆性的研究 247 11.5 拉普拉斯金字塔 250 11.5.1 定義 250 11.5.2 應用 252 第12章 圖像輪廓 257 12.1 查找并繪制輪廓 257 12.1.1 查找圖像輪廓:findContours函數 257 12.1.2 繪制圖像輪廓:drawContours函數 265 12.1.3 輪廓實例 266 12.2 矩特征 270 12.2.1 矩的計算:moments函數 271 12.2.2 計算輪廓的面積:contourArea函數 273 12.2.3 計算輪廓的長度:arcLength函數 276 12.3 Hu矩 278 12.3.1 Hu矩函數 278 12.3.2 形狀匹配 282 12.4 輪廓擬合 284 12.4.1 矩形包圍框 285 12.4.2 最小包圍矩形框 287 12.4.3 最小包圍圓形 289 12.4.4 最優擬合橢圓 290 12.4.5 最優擬合直線 291 12.4.6 最小外包三角形 293 12.4.7 逼近多邊形 294 12.5 凸包 296 12.5.1 獲取凸包 297 12.5.2 凸缺陷 299 12.5.3 幾何學測試 302 12.6 利用形狀場景算法比較輪廓 306 12.6.1 計算形狀場景距離 306 12.6.2 計算Hausdorff距離 309 12.7 輪廓的特征值 312 12.7.1 寬高比 312 12.7.2 Extent 313 12.7.3 Solidity 314 12.7.4 等效直徑(Equivalent Diameter) 315 12.7.5 方向 316 12.7.6 掩膜和像素點 318 12.7.7 最大值和最小值及它們的位置 323 12.7.8 平均顏色及平均灰度 325 12.7.9 極點 326 第13章 直方圖處理 329 13.1 直方圖的含義 329 13.2 繪制直方圖 333 13.2.1 使用Numpy繪制直方圖 333 13.2.2 使用OpenCV繪制直方圖 335 13.2.3 使用掩膜繪制直方圖 341 13.3 直方圖均衡化 345 13.3.1 直方圖均衡化原理 347 13.3.2 直方圖均衡化處理 351 13.4 pyplot模塊介紹 353 13.4.1 subplot函數 353 13.4.2 imshow函數 354 第14章 傅里葉變換 358 14.1 理論基礎 358 14.2 Numpy實現傅里葉變換 362 14.2.1 實現傅里葉變換 363 14.2.2 實現逆傅里葉變換 364 14.3 OpenCV實現傅里葉變換 365 14.3.1 實現傅里葉變換 366 14.3.2 實現逆傅里葉變換 368 14.4 濾波處理 369 14.4.1 濾波原理 369 14.4.2 高通濾波實現 374 14.4.3 低通濾波實現 377 第15章 模板匹配 380 15.1 模板匹配基礎 380 15.2 多模板匹配 387 第16章 霍夫變換 393 16.1 霍夫直線變換 393 16.1.1 霍夫變換原理 393 16.1.2 HoughLines函數 399 16.1.3 HoughLinesP函數 401 16.2 霍夫圓環變換 403 第17章 圖像分割與提取 406 17.1 用分水嶺算法實現圖像分割與提取 406 17.1.1 算法原理 406 17.1.2 相關函數介紹 408 17.1.3 分水嶺算法圖像分割實例 418 17.2 交互式前景提取 421 17.2.1 矩形框提取 424 17.2.2 自定義模板提取 426 17.2.3 手繪模板提取 429 第18章 視頻處理 432 18.1 VideoCapture類 432 18.1.1 類函數介紹 432 18.1.2 捕獲攝像頭視頻 437 18.1.3 播放視頻文件 438 18.2 VideoWriter類 438 18.2.1 類函數介紹 439 18.2.2 保存視頻 440 18.3 視頻操作基礎 442 第19章 繪圖及交互 444 19.1 繪畫基礎 444 19.1.1 繪制直線 445 19.1.2 繪制矩形 446 19.1.3 繪制圓形 447 19.1.4 繪制橢圓 449 19.1.5 繪制多邊形 450 19.1.6 在圖形上繪制文字 451 19.2 鼠標交互 454 19.2.1 繪制隨機矩形 456 19.2.2 雙窗口繪制圖形 457 19.2.3 繪制多種不同圖形 458 19.3 滾動條 460 19.3.1 用滾動條實現調色板 461 19.3.2 滾動條交互 462 19.3.3 用滾動條作為開關 463 第20章 K近鄰算法 465 20.1 理論基礎 465 20.2 計算 468 20.2.1 歸一化 468 20.2.2 距離計算 469 20.3 手寫數字識別的原理 470 20.4 自定義函數手寫數字識別 475 20.5 K近鄰模塊的基本使用 482 20.6 K近鄰手寫數字識別 487 第21章 支持向量機 490 21.1 理論基礎 490 21.2 SVM流程 493 21.3 SVM員工表現預測 494 21.4 手寫數字識別 498 第22章 K均值聚類 508 22.1 理論基礎 508 22.1.1 分豆子 509 22.1.2 K均值聚類的基本步驟 512 22.2 K均值聚類模塊 512 22.3 單特征豆子分類 513 22.4 米粒分類 517 22.5 灰度圖像二值化 521 第23章 人臉識別 526 23.1 人臉檢測 526 23.1.1 基本原理 526 23.1.2 級聯分類器的使用 529 23.1.3 函數介紹 530 23.1.4 案例介紹 531 23.2 人臉識別基礎 534 23.2.1 人臉識別基本流程 534 23.2.2 OpenCV人臉識別基礎 535 23.3 LPBH人臉識別 536 23.3.1 基本原理 537 23.3.2 函數介紹 540 23.3.3 案例介紹 541 23.4 EigenFaces人臉識別 543 23.4.1 基本原理 543 23.4.2 函數介紹 543 23.4.3 案例介紹 544 23.5 Fisherfaces人臉識別 546 23.5.1 基本原理 546 23.5.2 函數介紹 547 23.5.3 案例介紹 548 23.6 人臉數據庫 549 本書基于面向 Python 的 OpenCV(OpenCV for Python),介紹了圖像處理的方方面面。本書以 OpenCV 官方文檔的知識脈絡為主線,并對細節進行補充和說明。 書中不僅介紹了 OpenCV 函數的使用方法,還介紹了函數實現的算法原理。在介紹 OpenCV 函數的 使用方法時,提供了大量的程序示例。而且在介紹函數對圖像的處理前,往往先展示函數對數值、數組 的處理,方便讀者從數值的角度觀察和理解函數的處理過程和結果。在介紹具體的算法原理時,本書盡 量使用通俗易懂的語言和貼近生活的示例來說明問題,避免使用過多復雜抽象的公式。
第2版前言
本書第1版出版后,深受廣大讀者朋友的喜愛,被很多高校選為教材,目前累計重印18次。為了更好地方便大家學習,我對本書進行了修訂。本次修訂主要完成了以下幾個方面的工作: 1. 內容完善、重點針對人工智能部分 本書第2版在保持知識結構不變的前提下,對部分重點、難點知識進行了重新梳理與說明。重點對K近鄰算法、支持向量機、K均值聚類、人臉識別部分進行了較大篇幅的修改。在這部分中,對相關的知識點進行了更細致、深入的介紹,并增加了部分例題。在例題的介紹上,增加了更詳盡的分析過程,并對其中的一些難點問題進行了圖解說明。在代碼實現上,給出了更加細致的說明與介紹。 2. 飽和展示 在介紹一個知識點時,針對要使用的基礎知識點,以“如第N章所述、如前所述”等形式導入,大部分情況下是較為合理的。但是,如果要介紹的知識點和要導入的知識點難度都較大,那么采用上述方式導入,會造成理解上的困難。針對上述問題,我對導入部分進行了重新設計,以期幫助大家更好地快速過渡到核心關鍵知識點的學習。針對一些關鍵圖表等,也采用重復展示的方式,避免大家反復地回翻到前面的頁面查看該圖表而分散注意力,使大家能夠更好地將注意力集中在當前知識點上。 針對一些難度較大、不好理解、容易使用錯誤的知識點(如掩膜等),分別在不同的章節,從不同的角度,對這部分知識點進行了講解,以期能夠幫助大家更好地理解相關知識點。 針對用到的一些難度較大、比較典型的Python知識點進行了介紹,以期幫助大家在Python基礎比較薄弱,甚至不太了解Python的情況下能夠閱讀本書,完成程序的設計與編寫。 3. 一圖勝千言 一些知識點相對比較抽象,如果單純使用文字描述,此時的說明可能會顯得蒼白無力,造成理解上的困難。圖表能夠形象地說明問題的核心本質,幫助我們更深入、系統地理解問題的內在邏輯。針對一些相對抽象的知識點,繪制了示意圖,來幫助大家更直觀、更深入地理解其原理。針對一些流程比較復雜的案例,繪制了流程圖,幫助大家厘清問題的具體邏輯與思路。 4. 例題解析與代碼注釋 本書第2版對一些相對較難例題的解答進行了重新設計。其中,增加了例題的分析過程,在分析過程中,對例題的相關知識點、實現思路等進行了更詳細的介紹。在總體說明上,進行了模塊或步驟劃分,讓解決問題的思路更具條理性。在全局的展示與理解上,增加了流程圖,對解題的具體思路和流程進行更清晰的介紹與展示。在代碼實現上,對函數的選取、使用等進行了更細致的介紹。 5. 調整OpenCV的版本 在第2版中,我們使用的版本是OpenCV 4.5。OpenCV的版本升級對應著功能的增加與改進。一般來說,OpenCV的版本更新具有較好的兼容性,新版本是適配舊版本的,不涉及對原有函數的改變。但是,也有極個別的函數存在例外。例如,函數cv2.findContours()在OpenCV3中有3個返回值,在OpenCV4中只有2個返回值。在OpenCV4發布后,很多讀者反饋在使用該函數時遇到錯誤提示。實際上,這是由于OpenCV版本更新后,仍舊使用3個返回值造成的。在第2版中,我們調整了該函數的使用說明,并保留了對該函數早前版本的相關介紹。當然,總體來說,除該函數外,新、舊版本的差別主要體現在功能的增加上。我們在學習基礎函數時,不要將關注力過度集中在版本調整上。 6. 增加了配套PPT、練習題 本書第1版出版后,被很多高校選為教材。為了給廣大教師、同學提供更好的學習體驗,我在第2版中提供了配套PPT和練習題。配套PPT涵蓋了本書的全部核心知識點,超過1000頁。希望配套PPT能夠為大家的學習提供方便。 7. 修訂了一些錯誤 在本書第1版出版后,收到了很多熱心讀者的反饋,大家提出了很多寶貴的意見和建議。同時,大家也幫忙指出了書中存在的一些書寫錯誤。在認真聽取大家意見的基礎上,我對書中的問題進行了認真細致的修訂。請廣大讀者朋友們繼續支持本書,提出意見和建議,讓本書能夠更好地改進。 誠摯感謝 感謝各位熱心讀者對本書的支持,感謝你們提出的熱心建議與意見。 感謝高鐵杠老師、于仕琪老師、董付國老師、畢磊老師對本書的大力支持。 感謝符隆美老師積極促成本書第2版的出版,感謝她對本書的細心修訂,同時也感謝為本書出版辛苦付出的各位同人。 感謝家人們幫我分擔了很多家務,讓本書得以順利出版。 本書出版受天津職業技術師范大學教材支持項目(項目編號XJJW1970)支持。 擴展服務 作者與天津撥云咨詢服務有限公司合作開發了本書配套的資料——“數字圖像處理虛擬實驗室V0.1”,歡迎大家與作者聯系索取相關資料。 本書根據作者的視頻課程《Python+OpenCV圖像處理》整理擴充而成,歡迎大家掃描本書封底的二維碼輸入“視頻”獲取相關視頻課的內容。 歡迎大家繼續學習本書的進階教程《計算機視覺40例:從入門到深度學習(OpenCV-Python)》(2022年電子工業出版社出版)。 讀者服務 本書提供全部內容的配套源代碼、圖片和PPT,歡迎大家掃描本書封底的二維碼輸入“源代碼”、“圖片”和“PPT”關鍵字獲取相應內容。 另外,大家也可以關注我的微信公眾號:計算機視覺之光(微信號cvlight)獲取關于本書的配套資源等更多資料。 希冀共勉 近年來,我們加快推進科技自立自強,全社會研發經費支出從一萬億元增加到二萬八千億元,居世界第二位,研發人員總量居世界首位,科技自立自強能力顯著提升。希望本書的出版能夠為科技的發展,建設教育強國、科技強國貢獻一份微薄的力量。 李立宗 2023年3月 |