《OpenCV計(jì)算機(jī)視覺技術(shù)(Python語言描述)(微課版)》全套教學(xué)課件_第1頁
《OpenCV計(jì)算機(jī)視覺技術(shù)(Python語言描述)(微課版)》全套教學(xué)課件_第2頁
《OpenCV計(jì)算機(jī)視覺技術(shù)(Python語言描述)(微課版)》全套教學(xué)課件_第3頁
《OpenCV計(jì)算機(jī)視覺技術(shù)(Python語言描述)(微課版)》全套教學(xué)課件_第4頁
《OpenCV計(jì)算機(jī)視覺技術(shù)(Python語言描述)(微課版)》全套教學(xué)課件_第5頁
已閱讀5頁,還剩723頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

《OpenCV計(jì)算機(jī)視覺技術(shù)(Python語言描述)(微課版)》第1章_初見OpenCV第2章_OpenCV入門第3章_圖像平滑與形態(tài)學(xué)處理第4章_圖像基礎(chǔ)變換第5章_圖像輪廓檢測第6章_人臉識別第7章_圖像特征檢測第8章_圖像分割第9章_目標(biāo)檢測與識別第10章_目標(biāo)追蹤第11章_神經(jīng)網(wǎng)絡(luò)第12章_YOLOv5檢測全套可編輯PPT課件

本課件是可編輯的正常PPT課件初見OpenCV本課件是可編輯的正常PPT課件Section計(jì)算機(jī)視覺OpenCV介紹OpenCV安裝配置本課件是可編輯的正常PPT課件計(jì)算機(jī)視覺本課件是可編輯的正常PPT課件計(jì)算機(jī)視覺是通過機(jī)器設(shè)備,如攝像機(jī)、電腦等,對生物視覺的模擬。計(jì)算機(jī)視覺的任務(wù)就是對在設(shè)備中采集到的圖像信息進(jìn)行處理。接下來我們以O(shè)penCV為例來了解計(jì)算機(jī)視覺。本課件是可編輯的正常PPT課件OpenCV介紹本課件是可編輯的正常PPT課件

OpenCV是一個基于BSD許可(開源)發(fā)行的跨平臺計(jì)算機(jī)視覺庫,可以運(yùn)行在Linux、Windows、Android和MacOS操作系統(tǒng)上。它輕量級而且高效——由一系列C函數(shù)和少量C++類構(gòu)成,同時提供了Python、Ruby、MATLAB等語言的接口,實(shí)現(xiàn)了圖像處理和計(jì)算機(jī)視覺方面的很多通用算法。計(jì)算機(jī)視覺作為人工智能領(lǐng)域下轄的分支之一,使用基于封裝在OpenCV中的算法及其將圖像讀取為NumPy矩陣(多維數(shù)組)這一特性,將使我們可以輕松解決在數(shù)據(jù)分析、機(jī)器學(xué)習(xí)等領(lǐng)域遇到的圖像處理問題。本課件是可編輯的正常PPT課件OpenCV安裝配置本課件是可編輯的正常PPT課件OpenCV的安裝1.安裝Python編譯環(huán)境2.使用pip安裝OpenCV函數(shù)庫本課件是可編輯的正常PPT課件1.進(jìn)入Python官網(wǎng),單擊Downloads→Windows選項(xiàng)本課件是可編輯的正常PPT課件2.進(jìn)入Python版本選擇頁面下載3.7.4版本的Python本課件是可編輯的正常PPT課件3.進(jìn)入Python的對應(yīng)版本下載頁面后,向下拖動滑動條,在表格中選擇“Windowsx86-64executableinstaller”進(jìn)行下載本課件是可編輯的正常PPT課件4.下載完成后打開安裝包,勾選AddPython3.7toPATH復(fù)選框?qū)ython加入到環(huán)境變量中本課件是可編輯的正常PPT課件5.安裝的路徑默認(rèn)即可本課件是可編輯的正常PPT課件6.安裝成功頁面本課件是可編輯的正常PPT課件1.在文件管理器的路徑欄上輸入%APPDATA%來定位到用戶路徑本課件是可編輯的正常PPT課件2.新建pip文件夾并創(chuàng)建pip.ini文件本課件是可編輯的正常PPT課件3.使用pip命令安裝OpenCV-使用“Win+R”組合鍵打開“運(yùn)行”對話框,輸入“cmd”運(yùn)行命令提示符本課件是可編輯的正常PPT課件4.在命令提示符窗口輸入命令“pipinstallopencv-python”,安裝OpenCV本課件是可編輯的正常PPT課件5.在命令行中打印OpenCV的版本號進(jìn)行驗(yàn)證Python環(huán)境是否已安裝成功,因?yàn)镺penCV的庫名為cv2,所以使用importcv2來引入OpenCV庫。正常打印出OpenCV版本號便證明環(huán)境正常安裝本課件是可編輯的正常PPT課件謝謝本課件是可編輯的正常PPT課件OpenCV入門本課件是可編輯的正常PPT課件Section圖像讀寫感興趣區(qū)域色彩空間視頻讀寫照相機(jī)程序本課件是可編輯的正常PPT課件圖像讀寫本課件是可編輯的正常PPT課件其中我們使用cv2.imread()函數(shù)讀取image.jpg的圖像數(shù)據(jù),再通過cv2.imwrite()函數(shù)將讀取到的img圖像數(shù)據(jù)寫入image_new.jpg圖像文件中。運(yùn)行后我們可以發(fā)現(xiàn)在根目錄下出現(xiàn)了與image.jpg圖像數(shù)據(jù)相同的image_new.jpg。本課件是可編輯的正常PPT課件實(shí)現(xiàn)圖片的讀取與顯示本課件是可編輯的正常PPT課件cv2.imread(filename,flags)->retval用于圖像數(shù)據(jù)的讀取函數(shù):第一個參數(shù),str類型的filename,表示讀取圖像的路徑。第二個參數(shù),int類型的flags,表示讀取圖像的模式,具體參數(shù)見表“圖像讀取模式”。第一個返回的參數(shù),numpy.ndarray類型的retval,表示讀取的圖像數(shù)據(jù)。圖像讀取模式本課件是可編輯的正常PPT課件cv2.imwrite(filename,img,params)->retval用于圖像數(shù)據(jù)的寫入函數(shù):第一個參數(shù),str類型的filename,表示寫入圖像的路徑。第二個參數(shù),numpy.ndarray類型的img,表示寫入圖像的數(shù)據(jù)。第三個參數(shù),list類型的param,針對不同格式的圖像保存質(zhì)量,這個參數(shù)有默認(rèn)值,并且后面不會用到,這里不展開說明。第一個返回的參數(shù),bool類型的retval,表示圖像寫入成功與否。本課件是可編輯的正常PPT課件cv2.imshow(winname,mat)用于圖像數(shù)據(jù)的顯示函數(shù):第一個參數(shù),str類型的winname,表示顯示圖像的窗口名稱,同樣也是窗口的標(biāo)識。第二個參數(shù),numpy.ndarray類型的mat,表示要顯示的圖像。本課件是可編輯的正常PPT課件cv2.waitKey(delay)->retval用于窗口刷新的等待函數(shù):第一個參數(shù),int類型的delay,表示等待用戶按鍵的時間,當(dāng)用戶按鍵后則刷新窗口。默認(rèn)值為0,表示一直等待按鍵觸發(fā)。第一個返回的參數(shù),int類型的retval,表示按鍵觸發(fā)的鍵值的ASCII,若按下的是Q鍵,則返回值為113。本課件是可編輯的正常PPT課件感興趣區(qū)域本課件是可編輯的正常PPT課件在計(jì)算機(jī)視覺中,感興趣區(qū)域(RegionOfInterest,ROI)表示圖像中需要處理的地方。在現(xiàn)實(shí)生活中,越來越多的地方開始采用人臉識別進(jìn)行身份驗(yàn)證,如火車站的人臉閘機(jī)、手機(jī)的快捷支付。而在進(jìn)行人臉識別驗(yàn)證中,人們常??梢宰⒁獾斤@示屏上除了人臉,還會實(shí)時用方框?qū)⑷四槝?biāo)識出來,而標(biāo)識出來的圖形對象將會用于程序后續(xù)的處理,標(biāo)識出來的區(qū)域便可理解為ROI(RegionofInterest)。計(jì)算機(jī)如何知道人臉的位置在后面章節(jié)會進(jìn)行講解,我們現(xiàn)在將對關(guān)于OpenCV中的ROI區(qū)域的標(biāo)識和截取功能進(jìn)行學(xué)習(xí)。本課件是可編輯的正常PPT課件NumPy一個用Python實(shí)現(xiàn)的科學(xué)計(jì)算,常用于矩陣和矢量計(jì)算,支持List的常用功能,如切片等。OpenCV將NumPy作為圖像處理的基本數(shù)據(jù)類型,讀取操作的圖像數(shù)據(jù)類型就是NumPy的多維數(shù)組numpy.ndarray。Numpy庫可使用命令行CMD輸入指令pipinstallnumpy進(jìn)行安裝。為了能更加直觀和方便地對圖像進(jìn)行處理,OpenCV采用了NumPy的多維數(shù)組來對圖像數(shù)據(jù)進(jìn)行存儲。本課件是可編輯的正常PPT課件通過已知的人臉區(qū)域的坐標(biāo)對圖像數(shù)據(jù)進(jìn)行切片操作后得到了人臉區(qū)域的圖像數(shù)據(jù)并顯示。本課件是可編輯的正常PPT課件圖像截取起始點(diǎn)為(150,240)的人臉數(shù)據(jù)本課件是可編輯的正常PPT課件xiaohe圖像中人臉的坐標(biāo)中心點(diǎn)為(150,240),我們可以通過對圖像數(shù)據(jù)進(jìn)行切片操作將人臉截取出來對人臉區(qū)域中的所有像素進(jìn)行賦值為0對圖像區(qū)域的截取和對圖像區(qū)域值的更改,可以看出圖像處理本質(zhì)上是對NumPy多維數(shù)組的操作本課件是可編輯的正常PPT課件在OpenCV中,我們可以通過幾何變換進(jìn)行對圖像的處理。幾何變換是對圖像平面上的像素進(jìn)行重新安排。通過幾何變換可以大幅度減少圖像數(shù)據(jù)中的不必要的或者多余的干擾信息,有利于我們在后續(xù)的處理和識別工作中將注意力集中在圖像中目標(biāo)內(nèi)容的本身。幾何變換常常作為圖像處理應(yīng)用的預(yù)處理步驟,是圖像歸一化的核心工作之一。一個幾何變換需要兩部分運(yùn)算:首先是空間變換所需的運(yùn)算,如平移、縮放、旋轉(zhuǎn)和正平行投影等,需要用它來表示輸出圖像與輸入圖像之間的(像素)映射關(guān)系;此外,還需要使用灰度差值算法,因?yàn)榘凑者@種變換關(guān)系進(jìn)行計(jì)算,輸出圖像的像素可能被映射到輸入圖像的非整數(shù)坐標(biāo)上。我們接下來學(xué)習(xí)OpenCV的仿射函數(shù),并對xiaohe圖像進(jìn)行平移變換的處理本課件是可編輯的正常PPT課件在OpenCV平移之前,我們需要構(gòu)造一個仿射矩陣,仿射矩陣的第一個數(shù)組為目標(biāo)圖像在x軸方向上移動多少距離,第二數(shù)組為在y軸方向移動多少距離。所以在該程序中,我們首先用Numpy數(shù)組來構(gòu)造這個仿射矩陣,并將其傳給cv2.warpAffine()函數(shù)中,從而實(shí)現(xiàn)目標(biāo)圖像的平移。對xiaohe的圖像進(jìn)行平移處理本課件是可編輯的正常PPT課件用于對圖像進(jìn)行仿射變換:第一個參數(shù),numpy.ndarray類型的src,表示需要進(jìn)行仿射變換的圖像。第二個參數(shù),numpy.ndarray類型的M,表示2×3的仿射矩陣。第三個參數(shù),tuple類型的dsize,表示輸出的圖像大小。第四個參數(shù),numpy.ndarray類型的dst,表示輸出的圖像。第五個參數(shù),int類型的borderMode,表示邊界像素模式,默認(rèn)值為BORDER_CONSTANT。第六個參數(shù),int類型的borderValue,表示邊界取值,默認(rèn)值為0。cv2.warpAffine(src,M,dsize,dst=None,flags=None,borderMode=None,borderValue=None)對xiaohe的圖像進(jìn)行平移處理本課件是可編輯的正常PPT課件對xiaohe的圖像進(jìn)行縮放顯示處理本課件是可編輯的正常PPT課件OpenCV提供了一個專門用于縮放的函數(shù),為cv2.resize()函數(shù)。該函數(shù)有兩種辦法進(jìn)行圖像的縮放處理,一是設(shè)置圖像縮放因子對圖像進(jìn)行縮放處理,二是設(shè)置圖像的像素大小進(jìn)行縮放處理。在該程序中,我們采用設(shè)置圖像縮放因子對圖像進(jìn)行放大并顯示,采用設(shè)置圖像的像素大小對圖像進(jìn)行縮小并顯示。對xiaohe的圖像進(jìn)行縮放顯示處理本課件是可編輯的正常PPT課件cv2.resize(src,dsize,dst=None,fx=None,fy=None,interpolation=None)第一個參數(shù),numpy.ndarray類型的src,表示需要進(jìn)行縮放的圖像。第二個參數(shù),tuple類型的dsize,表示縮放處理后的圖像像素大小。如果用縮放因子進(jìn)行縮放,則設(shè)置為None。第三個參數(shù),numpy.ndarray類型的dst,表示輸出的圖像。第四個參數(shù),float類型的fx,表示圖像的寬度縮放因子大小,即寬度縮放比例。第五個參數(shù),float類型的fx,表示圖像的高度縮放因子大小,即高度縮放比例。第六個參數(shù),int類型的interpolation,表示插值方法,常用的插值方法枚舉如表“OpenCV常用插值方法枚舉表”所示。默認(rèn)為cv2.INTER_LINER。對xiaohe的圖像進(jìn)行縮放顯示處理本課件是可編輯的正常PPT課件OpenCV常用插值方法枚舉表本課件是可編輯的正常PPT課件對xiaohe的圖像進(jìn)行旋轉(zhuǎn)處理本課件是可編輯的正常PPT課件首先我們通過cv2.getRotationMatrix2D()函數(shù)生成一個仿射矩陣,這個函數(shù)需要三個參數(shù),分別是旋轉(zhuǎn)中心、旋轉(zhuǎn)角度、旋轉(zhuǎn)后圖像的縮放因子大小。從程序中設(shè)置圖像繞圖像的中心節(jié)點(diǎn)進(jìn)行逆時針45°旋轉(zhuǎn),并縮小圖像大小的50%,最終顯示該圖像。對xiaohe的圖像進(jìn)行旋轉(zhuǎn)處理本課件是可編輯的正常PPT課件cv2.getRotationMatrix2D()用于生成旋轉(zhuǎn)類型的2×3仿射矩陣:第一個參數(shù),tuple類型的center,表示圖像中的旋轉(zhuǎn)中心坐標(biāo)。第二個參數(shù),float類型的angle,表示以度為單位的旋轉(zhuǎn)角度。正值為逆時針旋轉(zhuǎn)。第三個參數(shù),float類型的scale,表示圖像的總縮放因子大小。對xiaohe的圖像進(jìn)行旋轉(zhuǎn)處理本課件是可編輯的正常PPT課件對xiaohe的圖像進(jìn)行透視變換處理本課件是可編輯的正常PPT課件我們首先需要編寫2個4×2的矩陣,第一個為變換后的四邊形頂點(diǎn)的坐標(biāo),第二個為圖像目標(biāo)的四邊形頂點(diǎn)的坐標(biāo)。將2個矩陣傳入cv2.getPerspectiveTransForm()函數(shù)中,從而生成3×3的透視變換矩陣,將該透視變換矩陣傳入cv2.warpPerspective()函數(shù)中,從而完成透視變換處理,最后將其結(jié)果顯示。對xiaohe的圖像進(jìn)行透視變換處理本課件是可編輯的正常PPT課件cv2.getPerspectiveTransform()用于生成3×3透視變換矩陣:第一個參數(shù),numpy.adarray類型的src,表示變換后的四邊形頂點(diǎn)的坐標(biāo)。第二個參數(shù),numpy.adrray類型的dst,表示圖像目標(biāo)的四邊形頂點(diǎn)的坐標(biāo)。對xiaohe的圖像進(jìn)行透視變換處理本課件是可編輯的正常PPT課件cv2.warpPerspective(src,M,dsize,dst=None,flags=None,borderMode=None,borderValue=None)用于對圖像進(jìn)行透視變換:第一個參數(shù),numpy.ndarray類型的src,表示需要進(jìn)行透視變換的圖像。第二個參數(shù),numpy.ndarray類型的M,表示3×3的透視變換矩陣。第三個參數(shù),tuple類型的dsize,表示輸出的圖像大小。第四個參數(shù),numpy.ndarray類型的dst,表示輸出的圖像。第五個參數(shù),int類型的borderMode,表示邊界像素模式,默認(rèn)值為BORDER_CONSTANT。第六個參數(shù),int類型的borderValue,表示邊界取值,默認(rèn)值為0。對xiaohe的圖像進(jìn)行透視變換處理本課件是可編輯的正常PPT課件在獲取到ROI區(qū)域的數(shù)據(jù)后,就可以對該區(qū)域進(jìn)行標(biāo)識,在接下來的程序中將會對xiaohe的人臉進(jìn)行標(biāo)識本課件是可編輯的正常PPT課件其中,cv2.rectangle()函數(shù)和cv2.putText()函數(shù)分別用來在圖像上繪制矩形和文字。本課件是可編輯的正常PPT課件cv2.rectangle(img,pt1,pt2,color,thickness,lineType,shift)用于在圖像上繪制矩形:第一個參數(shù),numpy.ndarray類型的img,表示需要進(jìn)行繪制的圖像。第二個參數(shù),tuple類型的pt1,表示繪制的矩形的左上角坐標(biāo)。第三個參數(shù),tuple類型的pt2,表示繪制的矩形的右下角坐標(biāo)。第四個參數(shù),tuple類型的color,表示繪制的矩形的BGR顏色。第五個參數(shù),int類型的thickness,表示繪制的矩形線條的粗細(xì)。第六個參數(shù),int類型的lineType,表示繪制的矩形的線條類型,默認(rèn)值為LINE_8,即為實(shí)線。第七個參數(shù),int類型的shift,表示位置的指數(shù)偏移,默認(rèn)值為0。本課件是可編輯的正常PPT課件cv2.putText(img,text,org,fontFace,fontScale,color,thickness,lineType,bottomLeftOrigin)用于在圖像上繪制文字:第一個參數(shù),numpy.ndarray類型的img,表示需要進(jìn)行繪制的圖像。第二個參數(shù),str類型的text,表示繪制的文字文本。第三個參數(shù),tuple類型的org,表示繪制文本的左下角坐標(biāo)。第四個參數(shù),int類型的fontFace,表示文本的字體。第五個參數(shù),int類型的fontScale,表示文本的縮放比例。本課件是可編輯的正常PPT課件第六個參數(shù),tuple類型的color,表示文本的BGR顏色。第七個參數(shù),int類型的thickness,表示繪制文本線條的粗細(xì)。第八個參數(shù),int類型的lineType,表示繪制文字的線條類型,有默認(rèn)值。第九個參數(shù),bool類型的bottomLeftOrigin,為true時文字的原點(diǎn)位于左下角,否則位于左上角。默認(rèn)為true。本課件是可編輯的正常PPT課件色彩空間本課件是可編輯的正常PPT課件計(jì)算機(jī)領(lǐng)域廣泛應(yīng)用的色彩空間為RGB,即Red(紅色)、Green(綠色)、Blue(藍(lán)色)這三種基色就構(gòu)成了RGB幾何色彩空間坐標(biāo)系,其本質(zhì)是通過不同基色的深淺組合成各種顏色。需要注意的是在OpenCV中的RGB為BGR,即藍(lán)色和紅色順序有所變化,其本質(zhì)與RGB相同。在OpenCV中常用到Gray、BGR等色彩空間。本課件是可編輯的正常PPT課件通過以上我們得知BGR色彩空間的像素值是B、G、R三個值組成的三元組,分別對應(yīng)藍(lán)色、綠色和紅色可以看到,該為xiaohe圖像的BGR色彩空間。需要注意三原色的深淺范圍也是在0~255之間。故同樣也是用np.uint8的數(shù)據(jù)類型來存儲圖像數(shù)據(jù)。本課件是可編輯的正常PPT課件cv2.createTrackbar(trackbarName,windowName,value,count,onChange)用于創(chuàng)建滑動條:第一個參數(shù),str類型的trackbarName,表示滑動條的名字。第二個參數(shù),str類型的windowName,表示滑動條所在窗體的名稱。第三個參數(shù),int類型的value,表示滑動條當(dāng)前位置,同時也是創(chuàng)建時的初始位置。第四個參數(shù),int類型的count,表示滑動條的最大值。第五個參數(shù),function類型的onChange,表示滑動條每次改變時這個函數(shù)都會被自動調(diào)用。本課件是可編輯的正常PPT課件cv2.createTrackbar(trackbarName,windowName,value,count,onChange)滑動條(TrackBar)常用于OpenCV中的動態(tài)調(diào)節(jié)參數(shù),其主要作用可以讓用戶最直觀了解到相關(guān)函數(shù)(算子)的閾值對圖像的影響。本課件是可編輯的正常PPT課件cv2.getTrackbarPos(trackbarname,winname)用于獲取滑動條當(dāng)前所處位置:第一個參數(shù),str類型的trackbarname,表示滑動條的名字。第二個參數(shù),str類型的winname,表示滑動條所在窗口的名字。本課件是可編輯的正常PPT課件本課件是可編輯的正常PPT課件本課件是可編輯的正常PPT課件我們將BGR三原色中B的數(shù)值滑動到255,可以看到下方的面板顯示為藍(lán)色。本課件是可編輯的正常PPT課件其中,先創(chuàng)建了高度為300、寬度為512的空白圖像,然后將窗口命名為'image',并通過cv2.createTrackbar()函數(shù)創(chuàng)建BGR三原色的滑動條且將其設(shè)置在窗口'image'上。在循環(huán)中通過獲取滑動條對象的值從而將其賦值到圖像的像素值中并顯示,來實(shí)現(xiàn)滑動條實(shí)時更改圖像顏色的功能。通過cv2.waitKey()函數(shù)獲取當(dāng)前鍵盤按下按鍵的ASCII值,27對應(yīng)Esc鍵的ASCII值,故當(dāng)按下Esc鍵時程序正常退出。本課件是可編輯的正常PPT課件如圖,灰度(GrayScale)顏色空間,顧名思義即是由不同灰度值的像素組成的圖像本課件是可編輯的正常PPT課件可以看一個680×1020大小的灰度圖像,相當(dāng)于680×1020個像素值組成的矩陣(圖中的矩陣省略了部分?jǐn)?shù)據(jù))。因?yàn)槠浠叶戎翟?~255這個區(qū)間內(nèi),所以通常用np.uint8的數(shù)據(jù)類型存儲,即8位的無符號整數(shù)。本課件是可編輯的正常PPT課件本課件是可編輯的正常PPT課件可以看到我們讀取的圖像數(shù)據(jù)是由不同的灰度值組成的NumPy二維數(shù)組本課件是可編輯的正常PPT課件視頻讀寫本課件是可編輯的正常PPT課件我們先思考一下一個視頻里面存儲的是什么?讓我們先觀看一個視頻,如圖2-14所示。本課件是可編輯的正常PPT課件通過觀看這個視頻后,我們可以得知該視頻給我們傳遞了火箭從點(diǎn)火到升空的一系列動作信息。所以一個視頻實(shí)質(zhì)上是由一幅幅圖像組成的集合,通過在不同的時間點(diǎn)顯示不同的圖像來傳遞信息的本課件是可編輯的正常PPT課件一個視頻是由不同時間點(diǎn)的多張圖像組成的,這里所說的時間點(diǎn)以一秒為單位。如果是一秒顯示一幅圖像便會有明顯的卡頓。所以這里引入了幀率(Framerate)這個屬性,意指以幀為單位的位圖圖像連續(xù)出現(xiàn)在顯示器上的頻率(速率),默認(rèn)單位為幀每秒(frame/sec,FramePerSecond),即是這個視頻一秒鐘顯示多少張(幀)圖像。本課件是可編輯的正常PPT課件在Windows系統(tǒng)中可以在對應(yīng)視頻的右鍵菜單的屬性中查看視頻的具體屬性如時長、幀高度、幀寬度等,可以看到RocketLaunch.mp4視頻的幀速率為25幀/秒,即這個視頻一秒鐘顯示25張圖像。本課件是可編輯的正常PPT課件視頻讀取通常分為對視頻或?qū)z像頭的逐幀圖像捕獲。在OpenCV中我們需要創(chuàng)建一個視頻捕獲器VideoCapture對這些視頻中的圖像進(jìn)行逐幀地讀取。接下來通過讀取并顯示RocketLaunch.mp4視頻的例子來學(xué)習(xí)OpenCV中的視頻捕獲功能本課件是可編輯的正常PPT課件本課件是可編輯的正常PPT課件程序中我們可以通過調(diào)用capture.open()函數(shù)來指定打開視頻的文件路徑,也可以在創(chuàng)建視頻捕獲器時調(diào)用構(gòu)造方法來指定文件路徑。在循環(huán)中通過capture對象來迭代捕獲并顯示逐幀圖像。對于電腦安裝了攝像頭的同學(xué),我們可以將視頻的路徑'RocketLaunch.mp4'改成0來打開并捕獲系統(tǒng)的默認(rèn)攝像頭的圖像。在進(jìn)入循環(huán)前為了讓視頻按照其正常速率播放,我們設(shè)置了wait_time參數(shù),因?yàn)閏v2.waitKey()函數(shù)是以毫秒為單位,而視頻的幀率的單位是以秒為單位,所以需要計(jì)算一幀等待的毫秒數(shù)。本課件是可編輯的正常PPT課件新建一個視頻捕獲器的對象:第一個參數(shù),當(dāng)傳入的是str類型的object時,表示視頻文件的路徑,即當(dāng)前模式為讀取視頻。當(dāng)傳入的是int類型的object時,表示攝像頭的序號,即當(dāng)前模式為讀取攝像頭。索引從0開始,默認(rèn)值為0。cv2.VideoCapture(object)本課件是可編輯的正常PPT課件用于打開視頻文件或攝像頭:第一個參數(shù),str類型的filename,表示捕獲器指定打開的視頻文件路徑。第一個返回的參數(shù),bool類型的retval,表示打開視頻成功與否。cv2.VideoCapture.open(filename)->retval本課件是可編輯的正常PPT課件用于打開視頻文件或攝像頭:第一個參數(shù),int類型的index,表示打開的攝像頭的索引。第一個返回的參數(shù),bool類型的retval,表示打開攝像頭成功與否。cv2.VideoCapture.open(index)->retval本課件是可編輯的正常PPT課件用于迭代捕獲逐幀圖像:第一個參數(shù),bool類型的retval,表示視頻幀讀取成功與否。第二個參數(shù),numpy.ndarray類型的image,表示從視頻中讀取到的圖像。cv2.VideoCapture.read()->retval,image本課件是可編輯的正常PPT課件用于迭代捕獲逐幀圖像:第一個參數(shù),bool類型的retval,表示視頻幀讀取成功與否。第二個參數(shù),numpy.ndarray類型的image,表示從視頻中讀取到的圖像。cv2.VideoCapture.read()->retval,image本課件是可編輯的正常PPT課件用于關(guān)閉視頻捕獲器:此函數(shù)一般在逐幀捕獲圖像迭代結(jié)束后由capture對象自動調(diào)用。cv2.VideoCapture.release()本課件是可編輯的正常PPT課件我們常常會對視頻捕獲的視頻進(jìn)行逐幀處理,并保存下來。對于圖像我們可以直接使用cv2.imwrite()函數(shù)進(jìn)行保存,而對于視頻或攝像頭的逐幀圖像時,就像前面介紹的視頻讀取一樣,我們需要先創(chuàng)建一個cv2.VideoWriter對象來創(chuàng)建一個新的視頻文件并進(jìn)行逐幀保存。

接下來通過在根目錄下創(chuàng)建一個帶發(fā)射過程字幕的火箭發(fā)射視頻的程序的例子來學(xué)習(xí)本課件是可編輯的正常PPT課件接下來通過在根目錄下創(chuàng)建一個帶發(fā)射過程字幕的火箭發(fā)射視頻的程序的例子來學(xué)習(xí)。本課件是可編輯的正常PPT課件本課件是可編輯的正常PPT課件本課件是可編輯的正常PPT課件本課件是可編輯的正常PPT課件程序中我們先讀取需要處理的視頻,再對讀取的每一幀進(jìn)行處理并通過writer對象將其寫入到新的視頻中。對于新的視頻的屬性這里選擇沿用原視頻的參數(shù)。其中關(guān)于新視頻的編碼格式參數(shù)fourcc(全稱為Four-CharacterCodes,是一種通過4字符代碼標(biāo)示視頻數(shù)據(jù)流格式),我們可以通過cv2.VideoWriter_fourcc()函數(shù)來獲取對應(yīng)的fourcc或是沿用原視頻的fourcc。本課件是可編輯的正常PPT課件獲取capture對象的視頻屬性:第一個參數(shù),int類型的propId,表示獲取該視頻的信息。若propId為3則獲取視頻的寬度,常用參數(shù)可以參考表2-3。第一個返回的參數(shù),float類型的retval。表示返回查詢的視頻捕獲器的參數(shù)。cv2.VideoCapture.get(propId)->retval本課件是可編輯的正常PPT課件獲取capture對象的視頻屬性:第一個參數(shù),int類型的propId,表示獲取該視頻的信息。若propId為3則獲取視頻的寬度,常用參數(shù)可以參考“cv2.VideoCapture.get()函數(shù)常用參數(shù)對照表”。第一個返回的參數(shù),float類型的retval。表示返回查詢的視頻捕獲器的參數(shù)。cv2.VideoCapture.get(propId)->retval本課件是可編輯的正常PPT課件cv2.VideoCapture.get()函數(shù)常用參數(shù)對照表本課件是可編輯的正常PPT課件用于獲取fourcc編碼:第一個到第四個參數(shù),str類型的c1~c4,分別表示fourcc的4字視頻編碼。通常使用XVID編碼創(chuàng)建視頻流。第一個返回的參數(shù),int類型的retval,表示fourcc對應(yīng)的是十進(jìn)制表示,即4字符的ASCII的拼接。cv2.VideoWriter_fourcc(c1,c2,c3,c4)->retval本課件是可編輯的正常PPT課件用于設(shè)置保存視頻:第一個參數(shù),str類型的filename,表示視頻的保存路徑。第二個參數(shù),int類型的fourcc,表示視頻編碼的4字符代碼,需要通過cv2.VideoWriter_fourcc()函數(shù)來生成。第三個參數(shù),float類型的fps,表示視頻的幀率。第四個參數(shù),tuple類型的size,視頻的寬高。cv2.VideoWriter(filename,fourcc,fps,size)本課件是可編輯的正常PPT課件用于寫入視頻幀:第一個參數(shù),numpy.ndarray類型的frame,表示需要寫入的視頻幀。writer.release()函數(shù)用于關(guān)閉視頻編寫器。cv2.VideoWriter(filename,fourcc,fps,size).write()本課件是可編輯的正常PPT課件用于關(guān)閉視頻編寫器cv2.VideoWriter(filename,fourcc,fps,size).release()本課件是可編輯的正常PPT課件照相機(jī)程序本課件是可編輯的正常PPT課件通過以上知識的學(xué)習(xí),可以來完成一個能基本完成拍照和錄像功能的簡易的照相機(jī)。首先看看智能手機(jī)上的照相機(jī)軟件有什么基本功能。我們來總結(jié)一下照相機(jī)的基本功能。(1) 實(shí)時顯示攝像頭的畫面。(2) 拍照(保存攝像頭的幀畫面)。(3) 錄像(視頻寫入)。(4) 操作提示(繪制文字)。本課件是可編輯的正常PPT課件本課件是可編輯的正常PPT課件本課件是可編輯的正常PPT課件本課件是可編輯的正常PPT課件程序中我們設(shè)置視頻捕獲器獲取攝像頭的畫面。通過獲取按鍵的鍵值來判斷用戶的功能選擇,最后對實(shí)時獲取到的攝像頭的幀畫面進(jìn)行文字繪制,以提示用戶操作。程序中我們使用ord()函數(shù)獲取字母的ASCII碼用于與cv2.waitKey()函數(shù)返回的用戶鍵盤操作鍵位對比來實(shí)現(xiàn)用戶交互操作。本課件是可編輯的正常PPT課件謝謝本課件是可編輯的正常PPT課件圖像平滑與形態(tài)學(xué)處理本課件是可編輯的正常PPT課件Section平滑處理數(shù)字形態(tài)學(xué)處理圖像金字塔本課件是可編輯的正常PPT課件平滑處理本課件是可編輯的正常PPT課件圖像處理(imageprocessing)通常是指通過計(jì)算機(jī)對數(shù)字圖像進(jìn)行分析、處理而達(dá)到所需的圖像的一種計(jì)算機(jī)視覺技術(shù)。如對圖像進(jìn)行的去噪處理本課件是可編輯的正常PPT課件在現(xiàn)實(shí)環(huán)境中,我們通過照相機(jī)等設(shè)備獲取數(shù)字圖像的過程中通常都會產(chǎn)生不同程度的噪聲,所以對于獲取到的圖像我們通常會進(jìn)行降噪處理即平滑處理,我們接下來先介紹一些常見噪聲并介紹其解決方法(平滑濾波)。本課件是可編輯的正常PPT課件圖像噪聲產(chǎn)生的原因主要有兩種:一種在圖像獲取過程中產(chǎn)生,照相機(jī)的感光元器件,如CMOS,在采集過程中受到拍攝環(huán)境、電路結(jié)構(gòu)等的影響;另一種在圖像信號傳輸過程中產(chǎn)生,因傳輸介質(zhì)的限制。本課件是可編輯的正常PPT課件椒鹽噪聲也稱為脈沖噪聲,一般是指隨機(jī)出現(xiàn)的白點(diǎn)或黑點(diǎn),其產(chǎn)生的原因通常是發(fā)生在圖像信號傳輸過程中信號受到干擾,如圖所示椒鹽噪聲:可以看出被椒鹽噪聲影響的圖像,噪點(diǎn)相對分散隨機(jī)。雖然人眼可以分辨出大致人臉特征,但計(jì)算機(jī)進(jìn)行視覺處理時可能會誤識別。本課件是可編輯的正常PPT課件高斯白噪聲,顧名思義指噪聲的瞬時值服從高斯分布,而它的功率譜密度又是均勻分布的。我們現(xiàn)實(shí)生活中最常見的一種高斯白噪聲就是在夜間拍照時的所產(chǎn)生的噪點(diǎn)。如圖所示:高斯白噪聲:本課件是可編輯的正常PPT課件濾波的概念來自通信理論,通常是指從原始信號中剔除干擾信號而得到有用信號的技術(shù),其概念亦可擴(kuò)展到計(jì)算機(jī)視覺領(lǐng)域,我們前面已經(jīng)看到了計(jì)算機(jī)在獲取現(xiàn)實(shí)中的圖像過程中產(chǎn)生的各種噪聲,可以通過接下來要學(xué)習(xí)的濾波對噪聲進(jìn)行平滑處理,將無用的噪點(diǎn)減少或剔除,保留有用的圖像信息。本課件是可編輯的正常PPT課件均值濾波是最基礎(chǔ)的平滑濾波方法,同時也是典型的線性濾波算法。主要采用領(lǐng)域平均的算法來達(dá)成平滑圖像的效果。一般在圖像上對目標(biāo)像素指定一個內(nèi)核(kernel),并用對目標(biāo)像素周圍像素值進(jìn)行加權(quán)平均運(yùn)算得出的值替換目標(biāo)像素值,如圖所示:均值濾波:本課件是可編輯的正常PPT課件可以看到在圖3-4中我們用4×4的方格來模擬圖像的一部分。目標(biāo)像素值2經(jīng)過加權(quán)平均運(yùn)算后得到了像素值16,從中我們也能看到內(nèi)核的大小會影響圖像的模糊程度,對于不同的噪聲影響需要找到合適的內(nèi)核大小。為了找到合適的內(nèi)核大小,我們會經(jīng)常改變內(nèi)核的大小,為了方便操作。我們使用滑動條來輔助調(diào)參。均值濾波:本課件是可編輯的正常PPT課件均值濾波:本課件是可編輯的正常PPT課件均值濾波:在程序中,我們打開了需要進(jìn)行去噪的圖像,即右圖中被椒鹽噪聲影響的圖像。然后創(chuàng)建了滑動條進(jìn)行動態(tài)調(diào)參。在循環(huán)中我們動態(tài)獲取滑動條設(shè)置的內(nèi)核大小,將其傳入cv2.blur()函數(shù)中進(jìn)行平滑處理,最后顯示查看效果。循環(huán)中的判斷語句用來避免獲取到的值為0的情況。本課件是可編輯的正常PPT課件用于對圖像進(jìn)行均值濾波處理后輸出圖像:第一個參數(shù),numpy.ndarray類型的src,表示要進(jìn)行處理的原圖。第二個參數(shù),tuple類型的ksize,表示進(jìn)行平滑處理的均值濾波的內(nèi)核大小,若ksize等于(5,5),表示內(nèi)核大小為5×5,注意ksize不能為0。第三個參數(shù),numpy.ndarray類型的dst,表示輸出的結(jié)果圖像,需要和原圖擁有相同的尺寸和類型。cv2.blur(src,ksize,dst,anchor,borderType)->_dst均值濾波:本課件是可編輯的正常PPT課件第四個參數(shù),tuple類型的anchor,表示平滑的點(diǎn)。它的默認(rèn)值為(-1,-1),即表示中心的點(diǎn),anchor的坐標(biāo)點(diǎn)必須小于ksize的大小。第五個參數(shù),int類型的borderType,用于推斷圖像外的邊界,一般采用默認(rèn)值。cv2.blur(src,ksize,dst,anchor,borderType)->_dst均值濾波:本課件是可編輯的正常PPT課件高斯濾波也是一種線性的濾波。相較于均值濾波,其更廣泛地應(yīng)用于圖像處理的去噪過程。本質(zhì)上,高斯濾波也是對整幅圖像進(jìn)行加權(quán)平均后得到降噪后圖像。而不同于均值濾波,使用高斯濾波對圖像進(jìn)行高斯模糊的本質(zhì)就是圖像與正態(tài)(高斯)分布做卷積。高斯濾波,顧名思義,對于符合正態(tài)分布的高斯噪聲的減噪非常有效。接下來我們使用高斯濾波來對被高斯噪聲影響的圖像進(jìn)行降噪處理。高斯濾波:本課件是可編輯的正常PPT課件高斯濾波:本課件是可編輯的正常PPT課件用于對圖像進(jìn)行均值濾波處理后輸出圖像:第一個參數(shù),numpy.ndarray類型的src,表示要進(jìn)行處理的原圖。第二個參數(shù),tuple類型的ksize,表示進(jìn)行平滑處理的高斯核的大小,若ksize等于(5,5),表示內(nèi)核大小為5x5,注意ksize的值只能為奇數(shù)和正數(shù)。第三個參數(shù),float類型的sigmaX,表示高斯核函數(shù)在x方向的標(biāo)準(zhǔn)偏差。cv2.blur(src,ksize,dst,anchor,borderType)->_dst高斯濾波:本課件是可編輯的正常PPT課件第四個參數(shù),numpy.ndarray類型的dst,輸出的結(jié)果圖像,需要和原圖擁有相同的尺寸和類型。第五個參數(shù),float類型的sigmaY,表示高斯核函數(shù)在y方向的標(biāo)準(zhǔn)偏差。若SigmaY設(shè)置為0,則SigmaY設(shè)置為SigmaX。若SigmaX核和SigmaY都為0,那么偏差由ksize計(jì)算出來。第六個參數(shù),int類型的borderType,用于推斷圖像外的邊界,一般采用默認(rèn)值。cv2.blur(src,ksize,dst,anchor,borderType)->_dst高斯濾波:本課件是可編輯的正常PPT課件中值濾波是一個典型的非線性濾波,顧名思義取目標(biāo)像素的鄰域像素值的中值來替代目標(biāo)像素值。主要適用于對椒鹽噪聲的抑制。中值濾波:本課件是可編輯的正常PPT課件如對于目標(biāo)像素(x,y)點(diǎn),窗口為3×3。首先我們將像素值排序,然后取其中值替代目標(biāo)像素(x,y)點(diǎn)。接下來我們使用中值濾波來對被椒鹽噪聲影響的圖像進(jìn)行去噪處理。中值濾波:本課件是可編輯的正常PPT課件中值濾波:本課件是可編輯的正常PPT課件中值濾波:本課件是可編輯的正常PPT課件中值濾波:相較于均值濾波,由于均值濾波的噪聲像素點(diǎn)也會參與到加權(quán)平均運(yùn)算中,所以輸出必然會受到噪聲或多或少的影響。而中值濾波過程中,噪聲成分通常不會被選擇,所以其中值濾波的噪聲消除的能力更勝一籌。效果如圖所示??梢钥吹綀D像對同一幅圖像,而中值濾波的去噪效果遠(yuǎn)比均值濾波要好,其在更大程度地保留細(xì)節(jié)的情況下,將噪聲成分去除。本課件是可編輯的正常PPT課件對圖像進(jìn)行中值濾波的處理:第一個參數(shù),numpy.ndarray類型的src,表示要進(jìn)行處理的原圖。第二個參數(shù),int類型的ksize,表示進(jìn)行中值濾波處理內(nèi)核的大小。第三個參數(shù),numpy.ndarray類型的dst,輸出的結(jié)果圖像,需要和原圖擁有相同的尺寸和類型。中值濾波:cv2.medianBlur(src,ksize,dst)->dst本課件是可編輯的正常PPT課件在我們前面提到過的平滑濾波中,都會有不同程度的對邊緣模糊的情況。接下來我們介紹雙邊濾波,其可以在最大程度保留邊緣的情況下對噪聲進(jìn)行消除。雙邊濾波也是一種非線性的濾波器。我們前面已經(jīng)介紹了高斯濾波,其采用的是圖像與高斯分布的濾波函數(shù)進(jìn)行加權(quán)平均。而雙邊濾波同樣采用高斯分布的濾波函數(shù)作為定義域?yàn)V波,而不同于高斯濾波,雙邊濾波引入了值域?yàn)V波的概念。高斯濾波只考慮了位置對中心像素的影響。而對于引入了值域?yàn)V波的雙邊濾波來說,還考慮了范圍像素差異對中心像素的影響。通俗來說,對于一個像素強(qiáng)度相對平坦,像素值變化很小,定義域?yàn)V波產(chǎn)生主要作用,就相當(dāng)于進(jìn)行了高斯濾波。而圖像的邊緣區(qū)域,像素值變化很大,值域?yàn)V波產(chǎn)生主要作用,保留邊緣細(xì)節(jié)。接下來我們使用雙邊濾波對噪聲圖像進(jìn)行去噪處理。雙邊濾波:本課件是可編輯的正常PPT課件雙邊濾波:本課件是可編輯的正常PPT課件雙邊濾波:本課件是可編輯的正常PPT課件雙邊濾波:本課件是可編輯的正常PPT課件用于對圖像進(jìn)行雙邊濾波處理:第一個參數(shù),numpy.ndarray類型的src,表示要進(jìn)行處理的原圖。第二個參數(shù),int類型的d,表示在進(jìn)行過濾過程中像素鄰域的直徑。如果這個值被設(shè)置為非正數(shù),則會通過sigmaSpace來計(jì)算出它。第三個參數(shù),float類型的sigmaColor,顏色空間濾波器的sigma值。這個參數(shù)越大就表明該像素領(lǐng)域內(nèi)有越寬廣的顏色會被混合到一起,產(chǎn)生較大的半相等顏色區(qū)域。第四個參數(shù),float類型的sigmaSpace,坐標(biāo)空間中的濾波器的sigma值,即坐標(biāo)空間的協(xié)方差。它的數(shù)值越大,意味著越遠(yuǎn)的像素會相互影響,從而使更大的區(qū)域中足夠相似的顏色獲取相同的顏色。當(dāng)d>0時,d指定了鄰域大小且與sigmaSpace無關(guān),否則,鄰域大小正比于sigmaSpace。雙邊濾波:cv2.bilateralFilter(src,d,sigmaColor,sigmaSpace,dst,borderType)->dst本課件是可編輯的正常PPT課件第五個參數(shù),numpy.ndarray類型的dst,輸出的處理后的圖像,需要和原圖擁有相同的尺寸和類型。第六個參數(shù),int類型的borderType,用于推斷圖像外的邊界,一般采用默認(rèn)值。第一個返回的參數(shù),numpy.ndarray類型的dst,表示經(jīng)過處理后的目標(biāo)圖像。在程序中相比于前面使用的濾波程序多增加了兩個滑動條為了更明確地看出sigmaColor和sigmaSpace之于雙邊濾波對圖像的影響。雙邊濾波:cv2.bilateralFilter(src,d,sigmaColor,sigmaSpace,dst,borderType)->dst本課件是可編輯的正常PPT課件數(shù)字形態(tài)學(xué)處理本課件是可編輯的正常PPT課件數(shù)學(xué)形態(tài)學(xué)(Mathematicalmorphology)是一門建立在格論和拓?fù)鋵W(xué)基礎(chǔ)之上的圖像分析學(xué)科,是數(shù)學(xué)形態(tài)學(xué)圖像處理的基本理論。其基本的運(yùn)算包括腐蝕和膨脹、開運(yùn)算和閉運(yùn)算、骨架抽取、極限腐蝕、擊中擊不中變換、形態(tài)學(xué)梯度、Top-hat變換、顆粒分析、流域變換等。其中的腐蝕和膨脹、開運(yùn)算和閉運(yùn)算將是我們這節(jié)講解的重點(diǎn)。在計(jì)算機(jī)視覺的使用中我們通常將數(shù)學(xué)形態(tài)學(xué)簡稱為形態(tài)學(xué)(真正的形態(tài)學(xué)意指生物學(xué)的一個研究動植物形態(tài)和結(jié)構(gòu)的分支)。本課件是可編輯的正常PPT課件在本節(jié)中我們操作的是灰度圖,關(guān)注的對象是灰度圖中的高亮區(qū)域(灰度值低的區(qū)域),如圖所示。本課件是可編輯的正常PPT課件腐蝕與膨脹是形態(tài)學(xué)的基本運(yùn)算,有消除噪聲的功能,但是其主要作用是分割獨(dú)立的圖像元素,以及連接相鄰的元素。本質(zhì)上是進(jìn)行尋找圖像中的極大值區(qū)域或極小值區(qū)域。腐蝕與膨脹如字面意思一樣,是一對相反的操作。對灰度圖中高亮區(qū)域進(jìn)行腐蝕處理,或是對圖像高亮區(qū)域進(jìn)行膨脹處理,如圖所示。本課件是可編輯的正常PPT課件我們知道進(jìn)行尋找極大值的運(yùn)算是相對于區(qū)間來說的,而對于圖像中,我們說的區(qū)間則是指一個窗口區(qū)域,這個窗口區(qū)域的定義和我們前面說的核(kernel)類似,如圖所示。我們?nèi)D像中的一部分區(qū)域,若計(jì)算圖中像素值88的點(diǎn),當(dāng)取窗口大小為3×3的內(nèi)核進(jìn)行運(yùn)算時,結(jié)果為用目標(biāo)像素鄰域3×3區(qū)域內(nèi)的最大值200替代目標(biāo)像素。而當(dāng)我們選用窗口大小為5×5的內(nèi)核進(jìn)行運(yùn)算時,則會選取目標(biāo)像素鄰域5×5區(qū)域內(nèi)最大值214替代目標(biāo)像素。本課件是可編輯的正常PPT課件而腐蝕運(yùn)算則是與膨脹相反,取其目標(biāo)像素鄰域內(nèi)的最小值替代目標(biāo)像素。接下來通過一個含有滑動條動態(tài)改變內(nèi)核尺寸的程序來觀察,不同窗口的腐蝕與膨脹運(yùn)算對圖像的影響。效果如圖所示。本課件是可編輯的正常PPT課件本課件是可編輯的正常PPT課件本課件是可編輯的正常PPT課件在程序中,我們首先創(chuàng)建了兩個窗體和滑動條,分別用于控制對腐蝕和膨脹函數(shù)的參數(shù)內(nèi)核尺寸的調(diào)節(jié),最后顯示出來。本課件是可編輯的正常PPT課件用于對圖像進(jìn)行膨脹處理:第一個參數(shù),numpy.ndarray類型的src,表示要進(jìn)行處理的原圖。第二個參數(shù),numpy.ndarray類型的kernel,表示進(jìn)行膨脹處理的內(nèi)核。第三個參數(shù),numpy.ndarray類型的dst,輸出的處理后的圖像,需要和原圖擁有相同的尺寸和類型。第四個參數(shù),tuple類型的anchor,表示錨的位置,默認(rèn)值(-1,-1)表示錨位于中心。cv2.dilate(src,kernel,dst,anchor,iterations,borderType,borderValue)->dst本課件是可編輯的正常PPT課件第五個參數(shù),int類型的iterations,迭代使用dilate的次數(shù),默認(rèn)值為1。第六個參數(shù),int類型的borderType,用于推斷圖像外部像素的某種邊界模式,默認(rèn)值為cv2.BORDER_DEFAULT。第六個參數(shù),int類型的borderValue,當(dāng)邊界為常數(shù)時的邊界值。第一個返回的參數(shù),numpy.ndarray類型的dst,表示處理后的圖像。cv2.dilate(src,kernel,dst,anchor,iterations,borderType,borderValue)->dst本課件是可編輯的正常PPT課件用于對圖像進(jìn)行腐蝕處理:第一個參數(shù),numpy.ndarray類型的src,表示要進(jìn)行處理的原圖。第二個參數(shù),numpy.ndarray類型的kernel,表示進(jìn)行腐蝕處理的內(nèi)核。第三個參數(shù),numpy.ndarray類型的dst,輸出的處理后的圖像,需要和原圖擁有相同的尺寸和類型。第四個參數(shù),tuple類型的anchor,表示錨的位置,默認(rèn)值(-1,-1)表示錨位于中心。cv2.erode(src,kernel,dst,anchor,iterations,borderType,borderValue)->dst本課件是可編輯的正常PPT課件第五個參數(shù),int類型的iterations,迭代使用erode的次數(shù),默認(rèn)值為1.第六個參數(shù),int類型的borderType,用于推斷圖像外部像素的某種邊界模式,默認(rèn)值為cv2.BORDER_DEFAULT。第六個參數(shù),int類型的borderValue,當(dāng)邊界為常數(shù)時的邊界值。第一個返回的參數(shù),numpy.ndarray類型的dst,表示處理后的圖像。cv2.erode(src,kernel,dst,anchor,iterations,borderType,borderValue)->dst本課件是可編輯的正常PPT課件膨脹和腐蝕所使用的函數(shù)參數(shù)大致相同,其中我們一般只需要傳入圖像參數(shù)和內(nèi)核參數(shù),其他參數(shù)都有默認(rèn)值。本課件是可編輯的正常PPT課件開運(yùn)算和閉運(yùn)算的基本思路是通過腐蝕和膨脹的組合運(yùn)算來消除圖像中高亮區(qū)域的噪聲。而形態(tài)學(xué)梯度的作用往往用于對高亮區(qū)域的輪廓提取。我們可以將膨脹和腐蝕操作當(dāng)作函數(shù),而開運(yùn)算和閉運(yùn)算則是膨脹和腐蝕組成的復(fù)合函數(shù)。如圖所示本課件是可編輯的正常PPT課件可以看到開運(yùn)算是對圖像進(jìn)行先腐蝕后膨脹的操作,這樣有效地消除了高亮區(qū)域以外的噪聲,閉運(yùn)算則是對圖像進(jìn)行先膨脹后腐蝕的操作,而這樣有利于對高亮區(qū)域的噪聲進(jìn)行消除,而形態(tài)學(xué)梯度則是求膨脹后的圖像與腐蝕后的圖像的差,這樣便可得到高亮區(qū)域的輪廓。需要注意在實(shí)際使用中,對于開運(yùn)算、閉運(yùn)算以及形態(tài)學(xué)梯度都可以直接使用本小節(jié)將學(xué)習(xí)到的morphologyEx()函數(shù),而不需要將學(xué)習(xí)到的dilate()和erode()函數(shù)進(jìn)行組合,當(dāng)然這也可以實(shí)現(xiàn)。本課件是可編輯的正常PPT課件開運(yùn)算:接下來我們通過使用開運(yùn)算來完成圖像的去噪處理。效果如圖:程序中,我們打開了有噪聲的圖像,定義了用于開運(yùn)算處理的內(nèi)核并調(diào)用了形態(tài)學(xué)的處理函數(shù),設(shè)置采用開運(yùn)算處理。顯示處理后的圖像。本課件是可編輯的正常PPT課件閉運(yùn)算:接下來我們通過閉運(yùn)算來完成圖像的去噪處理。效果如圖:程序中,我們進(jìn)行處理的步驟與前面使用開運(yùn)算的處理程序大致相同,不同的地方只有傳入cv2.morphologyEx()函數(shù)的圖像和參數(shù)cv2.MORPH_CLOSE。這個函數(shù)是用于形態(tài)學(xué)處理函數(shù),它可以通過設(shè)置不同的形態(tài)學(xué)處理參數(shù)完成大部分形態(tài)學(xué)處理包括:開運(yùn)算、閉運(yùn)算、形態(tài)學(xué)梯度等。本課件是可編輯的正常PPT課件形態(tài)學(xué)梯度:形態(tài)學(xué)梯度,顧名思義是使用基于形態(tài)學(xué)的操作來提取的圖形梯度(關(guān)于圖形梯度會在第4章進(jìn)行學(xué)習(xí)),其主要作用是對高亮區(qū)域輪廓的提取,步驟則是對高亮區(qū)域進(jìn)行膨脹然后再剔除被腐蝕區(qū)域的操作。接下來使用cv2.morphologyEx()函數(shù)來完成圖像的形態(tài)學(xué)梯度處理。效果如圖所示。本課件是可編輯的正常PPT課件形態(tài)學(xué)梯度:經(jīng)運(yùn)算后得到的區(qū)域正是膨脹運(yùn)算和腐蝕運(yùn)算的差,運(yùn)算的結(jié)果就是高亮區(qū)域的輪廓。本課件是可編輯的正常PPT課件用于對圖像進(jìn)行開運(yùn)算、閉運(yùn)算或形態(tài)學(xué)處理:第一個參數(shù),numpy.ndarray類型的src,表示要進(jìn)行處理的原圖。第二個參數(shù),int類型的op,表示形態(tài)學(xué)處理的類型,具體參數(shù)如“形態(tài)學(xué)處理類型對照表”。cv2.morphologyEx(src,op,kernel,dst,anchor,iterations,borderType,borderValue)->dst本課件是可編輯的正常PPT課件本課件是可編輯的正常PPT課件第三個參數(shù),numpy.ndarray類型的kernel,表示進(jìn)行形態(tài)學(xué)處理的內(nèi)核。第四個參數(shù),numpy.ndarray類型的dst,輸出的處理后的圖像,需要和原圖擁有相同的尺寸和類型。第五個參數(shù),tuple類型的anchor,表示錨的位置,默認(rèn)值(-1,-1)表示錨位于中心。第六個參數(shù),int類型的iterations,迭代使用erode的次數(shù),默認(rèn)值為1。第七個參數(shù),int類型的borderType,用于推斷圖像外部像素的某種邊界模式,默認(rèn)值為cv2.BORDER_DEFAULT。第八個參數(shù),int類型的borderValue,當(dāng)邊界為常數(shù)時的邊界值。cv2.morphologyEx(src,op,kernel,dst,anchor,iterations,borderType,borderValue)->dst本課件是可編輯的正常PPT課件第一個返回的參數(shù),numpy.ndarray類型的dst,表示處理后的圖像。我們一般進(jìn)行形態(tài)學(xué)處理時,僅需要傳入前三個參數(shù)需要處理的圖像、形態(tài)學(xué)處理類型、形態(tài)學(xué)處理內(nèi)核便可,其他參數(shù)都有默認(rèn)值。cv2.morphologyEx(src,op,kernel,dst,anchor,iterations,borderType,borderValue)->dst本課件是可編輯的正常PPT課件可以看出,在形態(tài)學(xué)處理中,運(yùn)算需要的基本參數(shù)大都相同,故可以使用cv2.morphologyEx()函數(shù)完成形態(tài)學(xué)的處理。cv2.morphologyEx(src,op,kernel,dst,anchor,iterations,borderType,borderValue)->dst本課件是可編輯的正常PPT課件圖像金字塔本課件是可編輯的正常PPT課件目前為止我們處理的圖像都是固定大小的。但在某些情況下,我們處理同一幅圖像的不同分辨率的版本,如在進(jìn)行目標(biāo)(如臉部)搜索時,我們不能確定目標(biāo)在圖像中的大小,在這種情況下我們需要對圖像的不同分辨率的版本進(jìn)行搜索。這樣一組不同分辨率的圖像我們稱其為圖像金字塔(以高分辨率的原圖為底,低分辨率的圖像在頂部,層層疊起喻為金字塔)。如圖所示。本課件是可編輯的正常PPT課件圖像金字塔有兩種分類:通過對原圖進(jìn)行向下采樣得到的一組不同分辨率的圖像的高斯金字塔(Gaussianpyramid)以及通過向上采樣得到的拉普拉斯金字塔(Laplacianpyramid)。向下采樣最明顯的變化就是圖像縮小,而向上采樣則是通過圖像插值得到圖像的放大版本。本課件是可編輯的正常PPT課件向下采樣向上采樣本課件是可編輯的正常PPT課件程序中我們使用cv2.pyrDown()及cv2.pyrUp()函數(shù)分別對girl.jpg及male.jpg完成向下采樣及向上采樣。本課件是可編輯的正常PPT課件用于對對圖像進(jìn)行向下采樣:第一個參數(shù),numpy.ndarray類型的src,表示要進(jìn)行向下采樣的原圖。第二個參數(shù),numpy.ndarray類型的dst,表示經(jīng)過下采樣后的圖像,需要和dstsize擁有相同的尺寸和類型。第三個參數(shù),tuple類型的dstsize,即(width,height)輸出圖像的寬度和高度,參數(shù)要求兩倍dst(向下采樣后的圖像)的寬高與原圖的寬高相比不能超過兩個像素。第四個參數(shù),int類型的borderType,用于推斷圖像外的邊界,一般采用默認(rèn)值。第一個返回的參數(shù),numpy.ndarray類型的dst,同第二個參數(shù)。cv2.pyrDown(src,dst,dstsize,borderType)->dst本課件是可編輯的正常PPT課件用于對圖像進(jìn)行向上采樣:第一個參數(shù),numpy.ndarray類型的src,表示要進(jìn)行向下采樣的原圖。第二個參數(shù),numpy.ndarray類型的dst,表示經(jīng)過下采樣后的圖像,需要和dstsize擁有相同的尺寸和類型。第三個參數(shù),tuple類型的dstsize,即(width,height)輸出圖像的寬度和高度,參數(shù)要求dst(向上采樣后的圖像)的寬高與兩倍的原圖寬高相比不能超過dst的寬高隊(duì)2取模。第四個參數(shù),int類型的borderType,用于推斷圖像外的邊界,一般采用默認(rèn)值。第一個返回的參數(shù),numpy.ndarray類型的dst,同第二個參數(shù)。cv2.pyrUp(src,dst,dstsize,borderType)->dst本課件是可編輯的正常PPT課件謝謝本課件是可編輯的正常PPT課件圖像基礎(chǔ)變換本課件是可編輯的正常PPT課件Section邊緣檢測霍夫變換直方圖本課件是可編輯的正常PPT課件邊緣檢測本課件是可編輯的正常PPT課件圖像變換(imagetransfrom)同樣是對圖像進(jìn)行的操作,而有別于圖像處理,復(fù)雜的色彩、邊緣以及輪廓組成了我們平時經(jīng)常看到的一幅幅圖像,而對于現(xiàn)實(shí)程序中的需求則只要保留其中的某一項(xiàng)或幾項(xiàng)的數(shù)據(jù)(色彩、邊緣或是輪廓)。運(yùn)用圖像變換的技術(shù)對圖像數(shù)據(jù)進(jìn)行處理后可以提取到另一種表示形式的數(shù)據(jù)。比如對圖像進(jìn)行邊緣檢測得到的邊緣二值圖就是一種只包含圖像邊緣的數(shù)據(jù),而色彩則被過濾掉了,如圖所示。本課件是可編輯的正常PPT課件邊緣指周邊部分、臨界的意思。本課件是可編輯的正常PPT課件對于左圖中的天空和稀薄的云來說,它們的顏色是漸變式的,邊緣不易區(qū)分;而對于右圖中,天空和飛機(jī)的顏色有明顯差別,因此它們的邊緣更易辨別。接下來我們將學(xué)習(xí)基于這一規(guī)律的邊緣檢測算法。同時,我們也可以得出結(jié)論:發(fā)現(xiàn)一個物體時,物體的邊緣能夠更快地引起我們的注意,成為我們視覺感知的焦點(diǎn)。邊緣檢測也是計(jì)算機(jī)視覺中發(fā)現(xiàn)物體的基礎(chǔ)。本課件是可編輯的正常PPT課件本節(jié)我們將會學(xué)習(xí)到通過不同算子和濾波器如Sobel算子、Laplacian算子、Canny算子以及Scharr濾波器來對圖像的邊緣進(jìn)行檢測。邊緣檢測的步驟一般有以下幾步:(1)濾波:邊緣檢測算法主要是基于圖像強(qiáng)度的一階和二階導(dǎo)數(shù),但導(dǎo)數(shù)的計(jì)算對噪聲很敏感,因此必須使用用于平滑處理的濾波器來改善與噪聲有關(guān)的邊緣檢測器。需要注意,大多數(shù)濾波器在降低噪聲的同時也導(dǎo)致了邊緣強(qiáng)度的損失,間接地對邊緣檢測效果有一定影響,所以通常在兩者之間需要平衡。(2)增強(qiáng):增強(qiáng)邊緣的基礎(chǔ)是確定圖像各點(diǎn)鄰域強(qiáng)度的變化值。增強(qiáng)算法可以將領(lǐng)域(或局部)強(qiáng)度值有顯著變化的點(diǎn)凸顯出來,即是對比領(lǐng)域間的差異。邊緣增強(qiáng)算法一般是通過計(jì)算梯度幅值來完成的。(3)檢測:經(jīng)過增強(qiáng)后的圖像,往往像素鄰域中有很多梯度值較大,在某些應(yīng)用場景下過多不準(zhǔn)確的邊緣點(diǎn)會對結(jié)果產(chǎn)生不良影響。而解決方法通常是采用梯度幅值的閾值為依據(jù)進(jìn)行判斷。通過以上這三步可以完成基本的邊緣檢測操作。本課件是可編輯的正常PPT課件我們前面看到了對于圖像邊緣的檢測實(shí)際上就是對圖像顏色變化率的計(jì)算,我們先從圖像的橫向像素值來觀察不同區(qū)域的像素值的變化,如圖所示。圖4-4本課件是可編輯的正常PPT課件可以看到圖中A點(diǎn)所在區(qū)域像素值變化平坦,而B點(diǎn)所在的區(qū)域中像素值變化較大可能是邊緣區(qū)域。B點(diǎn)在熱氣球的條紋處,結(jié)果就是邊緣區(qū)域。故我們可以通過求離散點(diǎn)的梯度的方式來求得到圖像中的邊緣,如圖所示。圖4-5本課件是可編輯的正常PPT課件而Sobel算子就是一個最基本的一階微分算子。對于邊緣區(qū)域的像素點(diǎn),像素值會呈現(xiàn)階躍式的表現(xiàn)。如圖4-4中的折線圖所示。通過對該區(qū)域求一階微分便可得到該區(qū)域躍遷的像素值的變化率。故可求得邊緣區(qū)域?yàn)闃O值K或者是大于某個閾值G的部分。如圖4-5所示。前面所說的是對于一維像素值的一階微分算子。而將Sobel算子擴(kuò)展到圖像數(shù)據(jù),需要通過對x方向和y方向分別進(jìn)行一階微分運(yùn)算后再疊加,便可得到圖像的全局邊緣數(shù)據(jù)。Sobel算子結(jié)合了高斯平滑和分化,因此結(jié)果具有一定的抗噪性。故對邊緣精度要求不高的情況下常用Sobel算子進(jìn)行邊緣檢測。本課件是可編輯的正常PPT課件圖4-6我們通過x方向的Sobel算子與y方向的Sobel算子分別對圖像進(jìn)行運(yùn)算,并將結(jié)果疊加來檢測圖像邊緣。效果如圖4-6所示。本課件是可編輯的正常PPT課件可以看到通過x方向的Sobel算子將豎直的邊緣提取出來,而y方向的Sobel算子則是將橫排的邊緣提取出來,通過兩個結(jié)果的疊加得出了五線譜的邊緣信息。本課件是可編輯的正常PPT課件本課件是可編輯的正常PPT課件Sobel()函數(shù)使用擴(kuò)展的Sobel算子,來計(jì)算一階、二階、三階或混合運(yùn)算圖像的差分:第一個參數(shù),numpy.ndarray類型的src,表示要進(jìn)行處理的原圖。第二個參數(shù),int類型的ddepth,表示輸出圖像的深度。第三個參數(shù),int類型的dx,表示x方向的差分階數(shù)。第四個參數(shù),int類型的dy,表示y方向的差分階數(shù)。cv2.Sobel(src,ddepth,dx,dy,dst,ksize,scale,delta,borderType)->dst本課件是可編輯的正常PPT課件第五個參數(shù),numpy.ndarray類型的dst,輸出的處理后的圖像,需要和原圖擁有相同的尺寸和類型。第六個參數(shù),int類型的ksize,表示Sobel核的大小;必須取1、3、5或7。默認(rèn)值為3。第七個參數(shù),float類型的scale,計(jì)算導(dǎo)數(shù)值時可選的縮放因子,默認(rèn)值是1,表示默認(rèn)情況下是無縮放的。cv2.Sobel(src,ddepth,dx,dy,dst,ksize,scale,delta,borderType)->dst本課件是可編輯的正常PPT課件第八個參數(shù),float類型的delta,表示在結(jié)果存入目標(biāo)圖(第二個參數(shù)dst)之前可選的delta值,有默認(rèn)值0。第九個參數(shù),int類型的borderType,用于推斷圖像外部像素的某種邊界模式,默認(rèn)值為cv2.BORDER_DEFAULT。第一個返回的參數(shù),numpy.ndarray類型的dst,表示處理后的圖像。cv2.Sobel(src,ddepth,dx,dy,dst,ksize,scale,delta,borderType)->dst本課件是可編輯的正常PPT課件用于將圖像數(shù)據(jù)轉(zhuǎn)換為np.uint8:第一個參數(shù),numpy.ndarray類型的src,表示要進(jìn)行處理的原圖。第二個參數(shù),numpy.ndarray類型的dst,輸出的處理后的圖像,需要和原圖擁有相同的尺寸和類型。第三個參數(shù),float類型的alpha,表示轉(zhuǎn)換為np.uint8的比例因子。第四個參數(shù),float類型的beta,表示轉(zhuǎn)換的縮放值。第一個返回的參數(shù),numpy.ndarray類型的dst,表示處理后的圖像。cv2.convertScaleAbs(src,dst,alpha,beta)->dst本課件是可編輯的正常PPT課件用于將傳入的兩幅圖像進(jìn)行不同閾值的疊加(混合):第一個參數(shù),numpy.ndarray類型的src1,表示要進(jìn)行處理的原圖。第二個參數(shù),float類型的alpha,表示對src1圖像進(jìn)行透明處理的閾值第三個參數(shù),numpy.ndarray類型的src2,表示要進(jìn)行處理的原圖。第四個參數(shù),float類型的alpha,表示對src2圖像進(jìn)行透明處理的閾值。cv2.addWeighted(src1,alpha,src2,beta,gammlana,dst,dtype)->dst本課件是可編輯的正常PPT課件第五個參數(shù),float類型的gammlana,表示對混合圖像的增強(qiáng)。第六個參數(shù),numpy.ndarray類型的dst,輸出的處理后的圖像,需要和原圖擁有相同的尺寸和類型。第七個參數(shù),int類型的dtype,表示輸出圖像的可選深度。當(dāng)兩幅圖像深度一致時默認(rèn)-1,表示默認(rèn)為src1的圖像深度。第一個返回的參數(shù),numpy.ndarray類型的dst,表示處理后的圖像。cv2.addWeighted(src1,alpha,src2,beta,gammlana,dst,dtype)->dst本課件是可編輯的正常PPT課件

Scharr濾波器的目的是解決Sobel算子精度低的問題(Sobel算子為了運(yùn)算速度采取了求導(dǎo)的近似值),Scharr濾波器僅作用于大小為3的內(nèi)核。Scharr濾波器的運(yùn)算過程和Sobel基本相同,效果如圖所示。本課件是可編輯的正常PPT課件可以看到程序中的

溫馨提示

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

最新文檔

評論

0/150

提交評論