OpenCV 是一個開源的計算機(jī)視覺庫,可以實(shí)現(xiàn)計算機(jī)視覺算法。本書從 OpenCV 用 Python 實(shí)現(xiàn)的基礎(chǔ)語法講起,逐步深入計算機(jī)視覺的進(jìn)階實(shí)戰(zhàn),并在最后配合項(xiàng)目實(shí)戰(zhàn)案例,重點(diǎn)介紹使用 OpenCV 進(jìn)行人工智能項(xiàng)目以及日常生活中小應(yīng)用程序開發(fā)的方法。通過本書讀者不但可以系統(tǒng)地學(xué)習(xí)有關(guān)計算機(jī)視覺的知識,而且還能對圖像處理的算法有更為深入的理解。
本書基于 Python,由淺入深、循序漸進(jìn)地介紹了 OpenCV 從入門到實(shí)踐的內(nèi)容。本書共 13 章,內(nèi)容涵蓋OpenCV 基礎(chǔ)知識、常見的圖像操作、圖像去噪、圖像輪廓的提取與分析,以及人臉識別、目標(biāo)追蹤等計算機(jī)視覺的項(xiàng)目實(shí)戰(zhàn)。
● 內(nèi)容實(shí)用:基于 OpenCV 4與Python,循序漸進(jìn)介紹了OpenCV從入門到實(shí)踐的內(nèi)容
● 手把手教學(xué):剖析基本操作,由淺入深帶領(lǐng)讀者對圖像處理的算法有更深入的了解
● 案例豐富:面向不同應(yīng)用場景,配合項(xiàng)目實(shí)戰(zhàn),詳細(xì)講解多個應(yīng)用案例
● 配套贈送:全書源代碼 + 重點(diǎn)知識講解視頻 + PPT
榮嘉祺
中國通信學(xué)會學(xué)生會員,CSDN 學(xué)生會員。在校期間帶隊獲得“中國智能機(jī)器人格斗大賽 - 大學(xué)組”二等獎、金磚國家青年創(chuàng)客大賽優(yōu)勝獎等諸多獎項(xiàng)。深入學(xué)習(xí)實(shí)踐OpenCV 多年。
第 1 章 初識 OpenCV
1.1 OpenCV 簡介
1.2 OpenCV 的安裝
1.2.1 在 Visual Studio 2017 上安裝
1.2.2 在 PyCharm 上安裝
1.2.3 在其他編譯器上安裝
1.3 OpenCV 常用的 Python 內(nèi)置函數(shù)
1.3.1 ord 函數(shù)
1.3.2 max 函數(shù)和 min 函數(shù)
1.3.3 sorted 函數(shù)
1.4 常見的錯誤
1.4.1 NameErron name ‘np’ is not defined
1.4.2 未知&0xff 產(chǎn)生的錯誤
1.4.3 圖片無法正常顯示或程序死機(jī)
1.4.4 OpenCV 版本不同產(chǎn)生的問題
1.5 OpenCV 代碼體驗(yàn)
第 2 章 圖片與初用 OpenCV
2.1 圖片在計算機(jī)中的存儲形式
2.1.1 BGR 圖
2.1.2 灰度圖
2.1.3 HSV 圖.
2.1.4 二值圖
2.2 圖片的讀取與寫出
2.2.1 圖片讀取
2.2.2 圖片保存
2.2.3 BGR 圖的讀取與寫出
2.2.4 灰度圖的讀取與寫出
2.2.5 圖片展示.
2.2.6 圖片延時.
2.2.7 圖片讀取演示
2.3 計算機(jī)視覺中常用的圖片屬性
第 3 章 OpenCV 的基礎(chǔ)函數(shù)
3.1 OpenCV 的繪圖函數(shù)
3.1.1 畫直線
3.1.2 畫矩形
3.1.3 畫圓
3.1.4 畫橢圓
3.1.5 畫多邊形
3.1.6 添加文字
3.2 OpenCV 的處理鼠標(biāo)事件函數(shù)
3.2.1 調(diào)用回調(diào)函數(shù)
3.2.2 鼠標(biāo)事件
3.2.3 回調(diào)函數(shù)
3.3 OpenCV 實(shí)現(xiàn)滑動條式調(diào)色板
第 4 章 OpenCV 的基礎(chǔ)圖像操作
4.1 圖像的基礎(chǔ)操作
4.1.1 獲取像素值
4.1.2 修改像素值
4.1.3 拆分及合并圖像通道
4.1.4 圖像擴(kuò)邊
4.2 圖像的算術(shù)操作
4.2.1 圖像加法
4.2.2 OpenCV 與 NumPy 模塊算術(shù)加法的區(qū)別
4.2.3 圖像加法練習(xí)
4.2.4 圖像加權(quán)
4.2.5 圖像邏輯運(yùn)算
4.3 直接像素點(diǎn)操作與 ROI
第 5 章 OpenCV 中動態(tài)圖像的基礎(chǔ)操作
5.1 捕獲視頻
5.1.1 cv2.VideoCapture 函數(shù)
5.1.2 攝像頭捕獲視頻
5.1.3 獲取本地視頻
5.1.4 cv2.VideoWriter 函數(shù)
5.1.5 視頻的保存
5.1.6 錯誤處理:函數(shù)不存在
5.2 物體追蹤
5.2.1 圖像的顏色空間轉(zhuǎn)換
5.2.2 構(gòu)建掩膜
5.2.3 指定 HSV 圖像物體追蹤
5.2.4 找到要追蹤對象的 HSV 值
第 6 章 OpenCV 圖像變換
6.1 縮放變換
6.2 平移變換
6.3 旋轉(zhuǎn)變換
6.4 仿射變換
6.5 透視變換
第 7 章 OpenCV 圖像噪點(diǎn)
7.1 圖像閾值
7.1.1 簡單閾值
7.1.2 自適應(yīng)閾值
7.1.3 Otsu's 二值化算法
7.2 圖像去噪
7.2.1 卷積
7.2.2 2D 卷積
7.2.3 平均卷積
7.2.4 高斯模糊
7.2.5 中值濾波
7.2.6 雙邊濾波
7.2.7 濾波后的處理操作
7.3 形態(tài)學(xué)轉(zhuǎn)換
7.3.1 形態(tài)學(xué)腐蝕
7.3.2 形態(tài)學(xué)膨脹
7.3.3 形態(tài)學(xué)高級操作
7.3.4 形態(tài)學(xué)梯度
7.3.5 形態(tài)學(xué)禮帽
7.3.6 形態(tài)學(xué)黑帽
7.3.7 結(jié)構(gòu)化元素
第 8 章 圖像邊緣
8.1 圖像梯度
8.1.1 cv2.Sobel 函數(shù)
8.1.2 Sobel 算子和 Scharr 算子
8.1.3 Laplacian 算子
8.2 Canny 邊緣檢測
8.2.1 Canny 邊緣檢測原理
8.2.2 cv2.Canny 函數(shù)
8.2.3 Canny 邊緣檢測實(shí)例
8.3 圖像金字塔
8.3.1 構(gòu)建圖像金字塔
8.3.2 高斯金字塔
8.3.3 拉普拉斯金字塔
第 9 章 圖像輪廓
9.1 什么是輪廓
9.2 輪廓的尋找與繪制
9.2.1 輪廓尋找
9.2.2 輪廓繪制
9.2.3 輪廓的尋找與繪制實(shí)例
9.3 輪廓特征
9.3.1 圖像的矩
9.3.2 輪廓的重心
9.3.3 輪廓的面積
9.3.4 輪廓的周長
9.3.5 輪廓近似
9.4 凸包
9.5 凸性檢測
9.6 輪廓框定
9.6.1 輪廓外接
9.6.2 圖像擬合
9.7 輪廓的性質(zhì)
9.7.1 面積占比
9.7.2 密實(shí)度
9.7.3 圓替換
9.7.4 輪廓夾角
9.7.5 輪廓中極點(diǎn)的坐標(biāo)
9.8 常用的輪廓處理函數(shù)
9.8.1 找凸缺陷
9.8.2 判斷點(diǎn)與輪廓的位置關(guān)系
9.8.3 形狀匹配
9.9 輪廓的層次結(jié)構(gòu)
第 10 章 綜合運(yùn)用 1:現(xiàn)代物體追蹤
10.1 霍夫變換——動態(tài)檢測
10.1.1 霍夫變換
10.1.2 霍夫變換的工作原理
10.1.3 霍夫變換提取直線的實(shí)現(xiàn)原理
10.1.4 直線檢測
10.1.5 基本霍夫變換的局限性
10.1.6 動態(tài)圓形檢測
10.1.7 其他圖形檢測
10.1.8 廣義霍夫變換
10.2 “HSV+輪廓”追蹤物體
10.2.1 基本原理
10.2.2 實(shí)際運(yùn)用
10.2.3 優(yōu)化算法
10.2.4 噪點(diǎn)去除
10.3 Camshift 目標(biāo)追蹤
10.3.1 Camshift 目標(biāo)追蹤的原理
10.3.2 顏色直方圖
10.3.3 Camshift 目標(biāo)追蹤代碼分析
10.4 光流法追蹤
10.4.1 運(yùn)動場與光流場
10.4.2 光流法
10.4.3 直接法
10.4.4 光流法的代碼實(shí)現(xiàn)
10.5 KCF 目標(biāo)追蹤
10.5.1 工作原理.
10.5.2 KCF 目標(biāo)追蹤實(shí)例
10.6 多目標(biāo)追蹤
10.6.1 創(chuàng)建單目標(biāo)對象追蹤器
10.6.2 讀取攝像頭(視頻)內(nèi)初幀
10.6.3 在初幀內(nèi)確定追蹤的所有對象
10.6.4 初始化多目標(biāo)追蹤的類
10.6.5 更新圖像并輸出圖像
第 11 章 綜合運(yùn)用 2:圖像數(shù)據(jù)交互
11.1 圖像中物體的裁剪
11.1.1 圖像的轉(zhuǎn)換和捕捉
11.1.2 圖像的去噪和填充
11.1.3 畫圖像輪廓
11.1.4 圖像的截取
11.2 單目測距
11.2.1 單目測距的原理
11.2.2 靜態(tài)單目測距
11.2.3 動態(tài)單目測距
11.3 圖像數(shù)據(jù)上傳
11.3.1 郵件的發(fā)送協(xié)議
11.3.2 基于 SMTP 的郵件發(fā)送
11.3.3 無附件的 SMTP 傳輸
11.3.4 有附件的 SMTP 傳輸
11.4 圖像數(shù)據(jù)遠(yuǎn)程交互
11.4.1 MQTT 協(xié)議
11.4.2 云上設(shè)備創(chuàng)建
11.4.3 規(guī)則引擎的創(chuàng)建
11.4.4 本地數(shù)據(jù)發(fā)布端代碼
11.4.5 本地數(shù)據(jù)接收端代碼
第 12 章 綜合運(yùn)用 3:圖像與現(xiàn)代生活
12.1 二維碼識別
12.1.1 靜態(tài)的二維碼識別
12.1.2 動態(tài)的二維碼識別
12.2 人臉識別
12.2.1 人臉識別的原理——Haar特征
12.2.2 人臉識別的實(shí)現(xiàn)
12.2.3 判斷是否存在人臉
12.3 手勢識別
12.3.1 手勢識別的分類
12.3.2 2D 攝像頭手勢識別
12.3.3 手勢識別的實(shí)現(xiàn)
12.4 人臉表情識別
12.4.1 基于 dlib 的人臉表情識別
12.4.2 靜態(tài)圖像的人臉表情識別
12.4.3 動態(tài)的人臉表情識別
12.5 文字的挖取與識別
12.5.1 文字挖取
12.5.2 文字識別
12.6 圖片與 ASCII 藝術(shù)
12.6.1 ASCII 藝術(shù)
12.6.2 圖片 ASCII 轉(zhuǎn)換
12.7 透明實(shí)現(xiàn)
12.7.1 透明實(shí)現(xiàn)的原理
12.7.2 區(qū)域檢測
12.7.3 背景幀的替換
12.7.4 透明實(shí)現(xiàn)過程
12.8 泊松克隆
12.8.1 泊松克隆簡介
12.8.2 正?寺
12.8.3 混合克隆
12.8.4 遷移融合
12.9 圖像修復(fù)
12.9.1 圖像修復(fù)原理
12.9.2 INPAINT_NS 修復(fù)
12.9.3 INPAINT_TELEA 修復(fù)
12.10 非真實(shí)感渲染
12.10.1 什么是非真實(shí)感渲染
12.10.2 保邊濾波器
12.10.3 細(xì)節(jié)增強(qiáng)
12.10.4 素描濾波器
12.10.5 風(fēng)格濾波
第 13 章 綜合運(yùn)用 4:圖像與工業(yè).
13.1 中值背景估計
13.1.1 時間中值濾波
13.1.2 運(yùn)用中值濾波進(jìn)行背景估計
13.1.3 幀差分
13.2 ORB 圖像對齊
13.2.1 圖像對齊的原理
13.2.2 尋找對應(yīng)點(diǎn)
13.2.3 基于特征的圖像對齊步驟
13.2.4 圖像對齊
13.3 圖像填充
13.3.1 前景與背景
13.3.2 前背分離
13.3.3 漫水填充算法