一篇文章帶你順利通過Python OpenCV入門階段_第1頁
一篇文章帶你順利通過Python OpenCV入門階段_第2頁
一篇文章帶你順利通過Python OpenCV入門階段_第3頁
一篇文章帶你順利通過Python OpenCV入門階段_第4頁
一篇文章帶你順利通過Python OpenCV入門階段_第5頁
已閱讀5頁,還剩6頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第一篇文章帶你順利通過PythonOpenCV入門階段目錄1.OpenCV初識(shí)與安裝2.OpenCV模塊簡介3.OpenCV圖像讀取,顯示,保存4.攝像頭和視頻讀取,保存5.OpenCV常用數(shù)據(jù)結(jié)構(gòu)和顏色空間6.OpenCV常用繪圖函數(shù)7.OpenCV界面事件操作之鼠標(biāo)與滑動(dòng)條8.圖像像素、通道分離與合并9.圖像邏輯運(yùn)算10.圖像ROI與mask掩膜11.圖像幾何變換12.圖像濾波13.圖像固定閾值與自適應(yīng)閾值14.圖像膨脹腐蝕15.邊緣檢測16.霍夫變換17.圖像直方圖計(jì)算及繪制18.模板匹配19.輪廓查找與繪制20.輪廓特征屬性及應(yīng)用21.高級(jí)部分-分水嶺算法及圖像修補(bǔ)22.GrabCutFloodFill圖像分割、角點(diǎn)檢測23.特征檢測與匹配24.OpenCV應(yīng)用部分之運(yùn)動(dòng)物體跟蹤與人臉識(shí)別

1.OpenCV初識(shí)與安裝

本部分要了解OpenCV(OpenSourceComputerVisionLibrary)的相關(guān)簡介,OpenCv可以運(yùn)行在多平臺(tái)之上,輕量級(jí)而且高效,由一系列C函數(shù)和少量C++類構(gòu)成,提供了Python、Ruby、MATLAB等語言的接口,所以在學(xué)習(xí)的時(shí)候,要注意查閱資料的語言實(shí)現(xiàn)相關(guān)問題。

這個(gè)階段除了安裝OpenCV相關(guān)庫以外,建議收藏官方網(wǎng)址,官方手冊,官方入門教程,這些都是最佳的學(xué)習(xí)資料。

模塊安裝完畢,需要重點(diǎn)測試OpenCV是否安裝成功,可通過Python查詢安裝版本。

2.OpenCV模塊簡介

先從全局上掌握OpenCV都由哪些模塊組成。例如下面這些模塊,你需要找到下述模塊的應(yīng)用場景與簡介。

core、imgproc、highgui、calib3d、features2d、contrib、flann、gpu、legacy、ml、objdetect、photo、stitching。

整理每個(gè)模塊的核心功能,并完成第一個(gè)OpenCV案例,讀取顯示圖片。

3.OpenCV圖像讀取,顯示,保存

安裝OpenCV之后,從圖像獲取開始進(jìn)行學(xué)習(xí),包含本地加載圖片,相機(jī)獲取圖片,視頻獲取,創(chuàng)建圖像等內(nèi)容。

只有先獲取圖像之后,才能對圖像進(jìn)行操作處理,信息提取,結(jié)果輸出,圖像顯示,圖像保存。

對于一個(gè)圖像而言,在OpenCV中進(jìn)行讀取展示的步驟如下,你可以將其代碼進(jìn)行對應(yīng)。

1.圖像讀??;

2.窗口創(chuàng)建;

3.圖像顯示;

4.圖像保存;

5.資源釋放。

涉及需要學(xué)習(xí)的函數(shù)有cv2.imread()、dWindow()、cv2.imshow()、cv2.imwrite()、cv2.destroyWindow()、cv2.destroyAllWindows()、cv2.imshow()、cv2.cvtColor()、cv2.imwrite()、cv2.waitKey()。

4.攝像頭和視頻讀取,保存

第一個(gè)要重點(diǎn)學(xué)習(xí)VideoCapture類,該類常用的方法有:

open()函數(shù);

isOpened()函數(shù);

release()函數(shù);

grab()函數(shù);

retrieve()函數(shù);

get()函數(shù);

set()函數(shù);

除了讀取視頻外,還需要掌握Opencv提供的VideoWriter類,用于保存視頻文件。

學(xué)習(xí)完相關(guān)知識(shí)之后,可以進(jìn)行這樣一個(gè)實(shí)驗(yàn),將一個(gè)視頻逐幀保存為圖片。

5.OpenCV常用數(shù)據(jù)結(jié)構(gòu)和顏色空間

這部分要掌握的類有Point類、Rect類、Size類、Scalar類,除此之外,在Python中用numpy對圖像進(jìn)行操作,所以numpy相關(guān)的知識(shí)點(diǎn),建議提前學(xué)習(xí),效果更佳。

OpenCV中常用的顏色空間有BGR顏色空間、HSV/HLS顏色空間、Lab顏色空間,這些都需要了解,優(yōu)先掌握BGR顏色空間。

6.OpenCV常用繪圖函數(shù)

掌握如下函數(shù)的用法,即可熟練的在Opencv中繪制圖形。

cv2.line();

cv2.circle();

cv2.rectangle();

cv2.ellipse();

cv2.fillPoly();

cv2.polylines();

cv2.putText()。

7.OpenCV界面事件操作之鼠標(biāo)與滑動(dòng)條

第一個(gè)要掌握的函數(shù)是鼠標(biāo)操作消息回調(diào)函數(shù),cv2.setMouseCallback(),滑動(dòng)條涉及兩個(gè)函數(shù),分別是:cv2.createTrackbar()和cv2.getTrackbarPos()。

掌握上述內(nèi)容之后,可以實(shí)現(xiàn)兩個(gè)案例,其一為鼠標(biāo)在一張圖片上拖動(dòng)框選區(qū)域進(jìn)行截圖,其二是通過滑動(dòng)條讓視頻倍速播放。

8.圖像像素、通道分離與合并

了解圖像像素矩陣,熟悉圖片的像素構(gòu)成,可以訪問指定像素的像素值,并對其進(jìn)行修改。

通道分離函數(shù)cv2.split(),通道合并函數(shù)cv2.merge()。

9.圖像邏輯運(yùn)算

掌握圖像之間的計(jì)算,涉及函數(shù)如下:

cv2.add();cv2.addWeighted();cv2.subtract();cv2.absdiff();cv2.bitwise_and();cv2.bitwise_not();cv2.bitwise_xor()。

還可以研究圖像乘除法。

10.圖像ROI與mask掩膜

本部分屬于OpenCV中的重點(diǎn)知識(shí),第一個(gè)為感興趣區(qū)域ROI,第二個(gè)是mask掩膜(掩碼)操作。

學(xué)習(xí)ROI部分時(shí),還可以學(xué)習(xí)一下圖像的深淺拷貝。

11.圖像幾何變換

圖像幾何變換依舊是對基礎(chǔ)函數(shù)的學(xué)習(xí)與理解,涉及內(nèi)容如下:

圖像縮放cv2.resize();

圖像平移cv2.warpAffine();

圖像旋轉(zhuǎn)cv2.getRotationMatrix2D();

圖像轉(zhuǎn)置cv2.transpose();

圖像鏡像cv2.flip();

圖像重映射cv2.remap()。

12.圖像濾波

理解什么是濾波,高頻與低頻濾波,圖像濾波函數(shù)。

線性濾波:方框?yàn)V波、均值濾波、高斯濾波,

非線性濾波:中值濾波、雙邊濾波,

方框?yàn)V波cv2.boxFilter();

均值濾波cv2.blur();

高斯濾波cv2.GaussianBlur();

中值濾波cv2.medianBlur();

雙邊濾波cv2.bilateralFilter()。

13.圖像固定閾值與自適應(yīng)閾值

圖像閾值化是圖像處理的重要基礎(chǔ)部分,應(yīng)用很廣泛,可以根據(jù)灰度差異來分割圖像不同部分,閾值化處理的圖像一般為單通道圖像(灰度圖),核心要掌握的兩個(gè)函數(shù):

固定閾值:cv2.threshold();

自適應(yīng)閾值:cv2.adaptiveThreshold()。

14.圖像膨脹腐蝕

膨脹、腐蝕屬于形態(tài)學(xué)的操作,是圖像基于形狀的一系列圖像處理操作。

膨脹腐蝕是基于高亮部分(白色)操作的,膨脹是対高亮部分進(jìn)行膨脹,類似“領(lǐng)域擴(kuò)張”,腐蝕是高亮部分被腐蝕,類似“領(lǐng)域被蠶食”。

膨脹腐蝕的應(yīng)用和功能:

消除噪聲;

分割獨(dú)立元素或連接相鄰元素;

尋找圖像中的明顯極大值、極小值區(qū)域;

求圖像的梯度;

核心需要掌握的函數(shù)如下:

膨脹cv2.dilate();

腐蝕cv2.erode()。

形態(tài)學(xué)其他操作,開運(yùn)算、閉運(yùn)算、頂帽、黑帽、形態(tài)學(xué)梯度這些都是基于膨脹腐蝕基礎(chǔ)之上,利用cv2.morphologyEx()函數(shù)進(jìn)行操作。

15.邊緣檢測

邊緣檢測可以提取圖像重要輪廓信息,減少圖像內(nèi)容,可用于分割圖像、特征提取等操作。

邊緣檢測的一般步驟:

濾波:濾出噪聲対檢測邊緣的影響;

增強(qiáng):可以將像素鄰域強(qiáng)度變化凸顯出來—梯度算子;

檢測:閾值方法確定邊緣;

常用邊緣檢測算子:

Canny算子,Canny邊緣檢測函數(shù)cv2.Canny();

Sobel算子,Sobel邊緣檢測函數(shù)cv2.Sobel();

Scharr算子,Scharr邊緣檢測函數(shù)cv2.Scahrr();

Laplacian算子,Laplacian邊緣檢測函數(shù)cv2.Laplacian()。

16.霍夫變換

霍夫變換(HoughTransform)是圖像處理中的一種特征提取技術(shù),該過程在一個(gè)參數(shù)空間中,通過計(jì)算累計(jì)結(jié)果的局部最大值,得到一個(gè)符合該特定形狀的集合,作為霍夫變換的結(jié)果。

本部分要學(xué)習(xí)的函數(shù):

標(biāo)準(zhǔn)霍夫變換、多尺度霍夫變換cv2.HoughLines();

累計(jì)概率霍夫變換cv2.HoughLinesP();

霍夫圓變換cv2.HoughCricles()。

17.圖像直方圖計(jì)算及繪制

先掌握直方圖相關(guān)概念,在掌握核心函數(shù),最后通過matplotlib模塊對直方圖進(jìn)行繪制。計(jì)算直方圖用到的函數(shù)是cv2.calcHist()。

直方圖相關(guān)應(yīng)用:

直方圖均衡化cv2.equalizeHist();

直方圖對比pareHist();

反向投影cv2.calcBackProject()。

18.模板匹配

模板匹配是在一幅圖像中尋找與另一幅模板圖像最匹配(相似)部分的技術(shù)。

核心用到的函數(shù)如下:

模板匹配cv2.matchTemplate();

矩陣歸一化cv2.normalize();

尋找最值cv2.minMaxLoc()。

19.輪廓查找與繪制

核心要理解到在OpenCV中,查找輪廓就像在黑色背景中找白色物體。

常用函數(shù):

查找輪廓cv2.findContours();

繪制輪廓cv2.drawContours()。

最后應(yīng)該掌握針對每個(gè)輪廓進(jìn)行操作。

20.輪廓特征屬性及應(yīng)用

這部分內(nèi)容比較重要,并且知識(shí)點(diǎn)比較多,核心內(nèi)容與函數(shù)分別如下:

尋找凸包c(diǎn)v2.convexHull()與凸性檢測cv2.isContourConvex();

輪廓外接矩形cv2.boundingRect();

輪廓最小外接矩形cv2.minAreaRect();

輪廓最小外接圓cv2.minEnclosingCircle();

輪廓橢圓擬合cv2.fitEllipse();

逼近多邊形曲線cv2.approxPolyDP();

計(jì)算輪廓面積cv2.contourArea();

計(jì)算輪廓長度cv2.arcLength();

計(jì)算點(diǎn)與輪廓的距離及位置關(guān)系cv2.pointPolygonTest();

形狀匹配cv2.matchShapes()。

21.高級(jí)部分-分水嶺算法及圖像修補(bǔ)

掌握分水嶺算法的原理,掌握核心函數(shù)cv2.watershed()。

可以擴(kuò)展補(bǔ)充圖像修補(bǔ)技術(shù)及相關(guān)函數(shù)cv2.inpaint(),學(xué)習(xí)完畢可以嘗試人像祛斑應(yīng)用。

22.GrabCutFloodFill圖像分割、角點(diǎn)檢測

這部分內(nèi)容都需要一些圖像專業(yè)背景知識(shí),先掌握相關(guān)概念知識(shí),在重點(diǎn)學(xué)習(xí)相關(guān)函數(shù)。

GrabCut算法cv2.grabCut();

漫水填充算法cv2.floodFill();

Harris角點(diǎn)檢測cv2.cornerHarris();

Shi-Tomasi角點(diǎn)檢測cv2.goodFeaturesToTrack();

亞像素角點(diǎn)檢測cv2.cornerSubPix()。

23.特征檢測與匹配

特征點(diǎn)的檢測和匹配是計(jì)算機(jī)視覺中非常重要的技術(shù)之一,在物體識(shí)別、視覺跟蹤、三維重建等領(lǐng)域都有很廣泛的應(yīng)用。

OpenCV提供了如下特征檢測方法:

“FAST”FastFeatureDetector;

“STAR”StarFeatureDetector;

“SIFT”SIFT(nonfreemodule)Opencv3移除,需調(diào)用xfeature2d庫;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論