智能圖像處理:Python和OpenCV實(shí)現(xiàn)-課件 第一章 數(shù)字圖像處理課件-opencv簡(jiǎn)介_(kāi)第1頁(yè)
智能圖像處理:Python和OpenCV實(shí)現(xiàn)-課件 第一章 數(shù)字圖像處理課件-opencv簡(jiǎn)介_(kāi)第2頁(yè)
智能圖像處理:Python和OpenCV實(shí)現(xiàn)-課件 第一章 數(shù)字圖像處理課件-opencv簡(jiǎn)介_(kāi)第3頁(yè)
智能圖像處理:Python和OpenCV實(shí)現(xiàn)-課件 第一章 數(shù)字圖像處理課件-opencv簡(jiǎn)介_(kāi)第4頁(yè)
智能圖像處理:Python和OpenCV實(shí)現(xiàn)-課件 第一章 數(shù)字圖像處理課件-opencv簡(jiǎn)介_(kāi)第5頁(yè)
已閱讀5頁(yè),還剩54頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

數(shù)字圖像處理一、OpenCV安裝教程DIRECTORY目錄二、OpenCV簡(jiǎn)單使用三、Matplotlib庫(kù)簡(jiǎn)單使用四、Numpy庫(kù)簡(jiǎn)單使用一、OpenCV安裝教程2.1opencv及常用庫(kù)的安裝教程在完成PyCharm的初始化配置后,接下來(lái)配置OpenCV和一些常用庫(kù)。首先,單機(jī)操作界面左上角的“File”,之后單機(jī)“setting”,會(huì)出現(xiàn)如下的配置界面。2.1opencv及常用庫(kù)的安裝教程在完成opencv庫(kù)的安裝后,可以使用相同的方法完成Numpy庫(kù)的安裝。同樣,也可以使用相同的方法完成matplotlib庫(kù)的安裝。。二、OpenCV簡(jiǎn)單使用2.1opencv圖像基礎(chǔ)在學(xué)習(xí)處理圖像的操作之前,首先要了解圖像的表示方法。圖像是由像素構(gòu)成的,同等面積下,像素越多則圖像越清晰。圖像主要分為三類(lèi):二值圖像:圖像只有

黑、白

兩種顏色(像素點(diǎn)

0或1)灰度圖像:圖像只有

黑、白、灰

三種顏色(像素點(diǎn)

0-255,其中

0

為黑色,255

為白色,1-254

之間均為灰色)RGB圖像:彩色圖像其中,二值和灰度圖像

均為

單通道,RGB圖像

三通道。、彩色圖像(RGB):由

紅、綠、藍(lán)

三色按照某種比例混合而成的。彩色圖像(BGR):opencv庫(kù)專(zhuān)用,順序?yàn)樗{(lán)、綠、紅。2.2opencv圖像的加載顯示和保存1、return=cv2.imread(filename,

flags):讀取加載圖片,return是返回值,其值是讀取到的圖像filename是要讀取圖像的完整文件名flags是讀取標(biāo)記用于控制讀取文件的類(lèi)型2、cv2.imshow(winname,image):顯示圖片winname是窗口的名稱(chēng)image是要顯示的圖像3、cv2.waitKey(delay):等待圖片的關(guān)閉delay表示等待鍵盤(pán)觸發(fā)時(shí)間,單位是ms。當(dāng)該值為負(fù)數(shù)或0時(shí)表示無(wú)限等待,默認(rèn)值為0.cv2.imwrite(filename,img):保存圖片filename是要保持圖片的完整路徑img是要保存圖像的名字2.3圖像顯示窗口創(chuàng)建與銷(xiāo)毀1、dWindow(winname):創(chuàng)建一個(gè)窗口。winname指窗口的名字2、cv2.destroyWindow(winname):銷(xiāo)毀某個(gè)窗口。winname指窗口的名字3、cv2.destroyAllWindows():銷(xiāo)毀所有窗口

2.4圖像常用屬性的獲取img.shape:打印圖片的高、寬和通道數(shù)(當(dāng)圖片為灰度圖像時(shí),顏色通道數(shù)為1,不顯示)img.size:打印圖片的像素?cái)?shù)目img.dtype:打印圖片的格式2.4圖像常用屬性的獲取img.shape:打印圖片的高、寬和通道數(shù)(當(dāng)圖片為灰度圖像時(shí),顏色通道數(shù)為1,不顯示)img.size:打印圖片的像素?cái)?shù)目img.dtype:打印圖片的格式運(yùn)行結(jié)果:2.5生產(chǎn)指定大小的矩形區(qū)域1、一個(gè)圖片img,它的某個(gè)像素點(diǎn)可以用img[x,y,c]表示(x,y為坐標(biāo),c為通道數(shù))2、同理,這個(gè)圖片的某個(gè)矩形區(qū)域可以表示為:img[x1:x2,y1:y2,c](相當(dāng)于截下一塊矩形,左上角坐標(biāo)為(x1,y1),右下角坐標(biāo)為(x2,y2))3、其中c一般取值為0,1,2(BGR)代表第幾個(gè)顏色通道,可以省略不寫(xiě)img[x,y]代表所有通道。實(shí)例1、生成一個(gè)大小為(200,300)顏色通道為3的紅色圖片

實(shí)例2、從一張圖片上截取一個(gè)矩形區(qū)域2.6圖片顏色通道的分離與合并在圖像處理過(guò)程中,有時(shí)會(huì)根據(jù)需要對(duì)通道進(jìn)行拆分與合并。OpenCV中提供了split()和merge()函數(shù)對(duì)圖像進(jìn)行拆分與合并。cv2.split(m):將圖片m分離為三個(gè)顏色通道2.6圖片顏色通道的分離與合并在圖像處理過(guò)程中,有時(shí)會(huì)根據(jù)需要對(duì)通道進(jìn)行拆分與合并。OpenCV中提供了split()和merge()函數(shù)對(duì)圖像進(jìn)行拆分與合并。cv2.split(m):將圖片m分離為三個(gè)顏色通道cv2.merge(mv):將三個(gè)顏色通道合并為一張圖片mv是需要合并的通道的圖像信息cv2.merge(mv):將三個(gè)顏色通道合并為一張圖片mv是需要合并的通道的圖像信息三、Matplotlib庫(kù)簡(jiǎn)單使用matplotlib庫(kù)函數(shù)基本用法(繪圖)Matplotlib庫(kù)是python優(yōu)秀的數(shù)據(jù)可視化第三方庫(kù),有超過(guò)100種數(shù)據(jù)可視化顯示效果。只需幾行代碼就可以生成圖表,直方圖,功率譜,條形圖,誤差圖,散點(diǎn)圖等。Matplotlib由各種可視化類(lèi)構(gòu)成Matplotlib.pyplot是繪制各類(lèi)可視化圖形的命令子庫(kù),相當(dāng)于快捷方式

(用戶(hù)可以?xún)H通過(guò)調(diào)用pyplot就可以使用Matplotlib中所有可視化的類(lèi))引用:importmatplotlib.pyplotasplt,簡(jiǎn)寫(xiě)為plt已成為一個(gè)不成文的規(guī)定matplotlib庫(kù)函數(shù)基本用法(繪圖)3.1plt.figure()用來(lái)畫(huà)圖,能自定義畫(huà)布大小figure(num=None,figsize=None,dpi=None,facecolor=None,edgecolor=None,frameon=True)num:圖像編號(hào)或名稱(chēng),數(shù)字為編號(hào)

,字符串為名稱(chēng)figsize:指定figure的寬和高,單位為英寸;dpi參數(shù)指定繪圖對(duì)象的分辨率,即每英寸多少個(gè)像素,缺省值為801英寸等于2.5cm,A4紙是21*30cm的紙張facecolor:背景顏色edgecolor:邊框顏色frameon:是否顯示邊框?qū)嵗?.2plt.plot(x,y,format_string,**kwargs)x:x軸數(shù)據(jù),列表或數(shù)組,可選y:y軸數(shù)據(jù),列表或數(shù)組format_string:控制曲線的格式字符串,可選**kwargs:第二組或更多,(x,y,format_string)3.3plt.subplot()plt.subplot()函數(shù)用于直接指定劃分方式和位置進(jìn)行繪圖。#使用plt.subplot來(lái)創(chuàng)建小圖.plt.subplot(221)表示將整個(gè)圖像窗口分為2行2列,當(dāng)前位置為1.plt.subplot(221)#plt.subplot(222)表示將整個(gè)圖像窗口分為2行2列,當(dāng)前位置為2.plt.subplot(222)#第一行的右圖#plt.subplot(223)表示將整個(gè)圖像窗口分為2行2列,當(dāng)前位置為3.plt.subplot(223)#plt.subplot(224)表示將整個(gè)圖像窗口分為2行2列,當(dāng)前位置為4.plt.subplot(224)3.4plt.imshow()Matplotlib中的imshow函數(shù)用于繪制熱圖。(熱圖:時(shí)數(shù)據(jù)分析常用的方法。通過(guò)色差、亮度來(lái)展示數(shù)據(jù)的差異,容易理解)imshow(X,cmap=None,norm=None,aspect=None,interpolation=None,alpha=None,vmin=None,vmax=None,origin=None,extent=None,shape=None,filternorm=1,filterrad=4.0,imlim=None,resample=None,url=None,hold=None,data=None,**kwargs)主要參數(shù):1.X:array_like對(duì)象/數(shù)列類(lèi)對(duì)象,shape(n,m)X可以是數(shù)列類(lèi)格式、或者PIL圖片。2.cmap:cmap是colormap的簡(jiǎn)稱(chēng),用于指定漸變色,默認(rèn)的值為viridis。3.aspect:aspect用于指定熱圖的單元格的大小,默認(rèn)值為equal,此時(shí)單元格用于是一個(gè)方塊,當(dāng)設(shè)置為auto時(shí),會(huì)根據(jù)畫(huà)布的大小動(dòng)態(tài)調(diào)整單元格的大小。4.alpha:alpha參數(shù)用于指定透明度。5.orign:orign參數(shù)指定繪制熱圖時(shí)的方向,默認(rèn)值為upper此時(shí)熱圖的右上角為(0,0),當(dāng)設(shè)置為lower時(shí),熱圖的左下角為(0,0)。6.vmin和vmax:用于限定數(shù)值的范圍,只將vmin和vmax之間的值進(jìn)行映射。7.interpolation:參數(shù)控制熱圖的顯示形式。8.extent:extent參數(shù)指定熱圖x軸和y軸的極值。3.5plt.show()在使用matplotlib庫(kù)的過(guò)程中,僅僅使用plt.imshow()函數(shù)無(wú)法將圖片顯示出來(lái),必須在后面添加plt.show()函數(shù)才能完成圖片的顯示。原理:plt.imshow()函數(shù)負(fù)責(zé)對(duì)圖像進(jìn)行處理,并顯示其格式,而plt.show()則是將plt.imshow()處理后的函數(shù)顯示出來(lái)。3.6繪制折線圖3.7繪制直方圖直方圖概述:從統(tǒng)計(jì)的角度講,直方圖是圖像內(nèi)灰度值的統(tǒng)計(jì)特性與圖像灰度值之間的函數(shù),直方圖統(tǒng)計(jì)圖像內(nèi)各個(gè)灰度級(jí)出現(xiàn)的次數(shù)。其表示方法為:第一,確定圖像像元的灰度值范圍;第二,以適當(dāng)?shù)幕叶乳g隔為單位將其劃分為若干等級(jí);第三,以橫軸表示灰度級(jí),以縱軸表示每一灰度級(jí)具有的像元數(shù)或該像元數(shù)占總像元數(shù)的比例值,做出的條形統(tǒng)計(jì)圖就是灰度直方圖。直方圖的繪制:OpenCV中提供了cv2.calcHist()函數(shù)用于計(jì)算統(tǒng)計(jì)直方圖,可使用matplotlib庫(kù)中的plot()函數(shù)繪制直方圖。hist=cv2.calcHist(image,channel,mask,histSize,range,accumulate)主要參數(shù):hist表示返回的統(tǒng)計(jì)直方圖,數(shù)組內(nèi)是各個(gè)灰度級(jí)的像素個(gè)數(shù)。image表示原始圖像,該圖像需要用“[]”括起來(lái)。channel

表示指定通道編號(hào)。通道編號(hào)需要用“[]”

括起來(lái)。mask表示掩模圖像。當(dāng)統(tǒng)計(jì)整幅圖像的直方圖時(shí),將這個(gè)值設(shè)為None.當(dāng)統(tǒng)計(jì)圖

像某一部分的直方圖時(shí),需要用到掩模圖像。histSize表示BINS的值,該值需要用“[]”括起來(lái)。range表示像素值范圍。accumulate表示累計(jì)標(biāo)識(shí),默認(rèn)值為False如果被設(shè)置為T(mén)rue,則直方圖在開(kāi)始計(jì)算時(shí)不會(huì)被清零,計(jì)算的是多個(gè)直方圖的累積結(jié)果,用于對(duì)一組圖像計(jì)算直方圖。該參數(shù)是可選擇的,一般情況下不需要設(shè)置??梢?jiàn),輸出的hist為一維數(shù)組。使用calchHist()函數(shù)計(jì)算圖像的統(tǒng)計(jì)直方圖。使用plot()函數(shù)繪制灰度直方圖。使用pyplot.hist()函數(shù)繪制灰度直方圖matplotlib.pyplot.hist(image,BINS)BINS表示灰度級(jí)的分組情況Image表示原始圖像數(shù)據(jù),必須將其轉(zhuǎn)換為一維數(shù)組。四、Numpy簡(jiǎn)單使用Numpy庫(kù)的簡(jiǎn)單介紹NumPy是Python語(yǔ)言的一個(gè)第三方庫(kù),其支持大量高維度數(shù)組與矩陣運(yùn)算。此外,NumPy也針對(duì)數(shù)組運(yùn)算提供大量的數(shù)學(xué)函數(shù)。機(jī)器學(xué)習(xí)涉及到大量對(duì)數(shù)組的變換和運(yùn)算,NumPy就成了必不可少的工具之一。Numpy庫(kù)的功能:ndarray,一個(gè)多維數(shù)組結(jié)構(gòu),高效且節(jié)省空間無(wú)需循環(huán),對(duì)整組數(shù)據(jù)進(jìn)行快速運(yùn)算的數(shù)學(xué)函數(shù)讀寫(xiě)磁盤(pán)數(shù)據(jù)的工具以及用于操作內(nèi)存映射文件的工具線性代數(shù)、隨機(jī)數(shù)生成和傅里葉變換功能用于集成C、C++等代碼的工具使用numpy創(chuàng)建一維數(shù)組numpy.array(object,

dtype=None,

copy=True,

order='K',

subok=False,

ndmin=0)object:數(shù)組公開(kāi)數(shù)組接口的任何對(duì)象,返回?cái)?shù)組的對(duì)象,或任何(嵌套)序列。dtype:數(shù)據(jù)類(lèi)型,可選使用numpy創(chuàng)建二維數(shù)組使用numpy創(chuàng)建全為0的二維數(shù)組np.zeros(shape,dtype=None,older=‘C’)shape是一個(gè)int或一個(gè)int元組,用于定義數(shù)組的大小。如果我們僅指定一個(gè)int變量,則將返回一維數(shù)組。對(duì)于一個(gè)整數(shù)元組,將返回給定形狀的數(shù)組。dtype是一個(gè)可選參數(shù),默認(rèn)值為float。它用于指定數(shù)組的數(shù)據(jù)類(lèi)型,例如int

older:C表示行優(yōu)先,F(xiàn)表示列優(yōu)先(可選參數(shù))使用numpy創(chuàng)建全為1的二維數(shù)組numpy.ones(shape,dtype=None,order=‘C’)參數(shù):shape是一個(gè)int或一個(gè)int元組,用于定義數(shù)組的大小。如果我們僅指定一個(gè)int變量,則將返回一維數(shù)組。對(duì)于一個(gè)整數(shù)元組,將返回給定形狀的數(shù)組。dtype是一個(gè)可選參數(shù),默認(rèn)值為float。它用于指定數(shù)組的數(shù)據(jù)類(lèi)型,例如intolder:C表示行優(yōu)先,F(xiàn)表示列優(yōu)先(可選參數(shù))使用numpy創(chuàng)建任意大小的數(shù)組并填充任意數(shù)字numpy.full(shape,

fill_value,

dtype=None,

order='C')返回一個(gè)根據(jù)指定shape和type,并用fill_value填充的新數(shù)組。參數(shù):shape:整數(shù)或整數(shù)序列新數(shù)組的形態(tài),單個(gè)值代表一維,參數(shù)傳元組,元組中元素個(gè)數(shù)就代表是幾維,例如,

(2,

3)

or

2.fill_value:

標(biāo)量(無(wú)向量)填充數(shù)組的值dtype:數(shù)據(jù)類(lèi)型,可選默認(rèn)值為None查看要填充數(shù)組的值數(shù)據(jù)類(lèi)型:np.array(fill_value).dtype。order:{‘C’,‘F’},可選是否在內(nèi)存中以行為主(C風(fēng)格)或列為主(Fortran風(fēng)格)連續(xù)(行或列)順序存儲(chǔ)多維數(shù)據(jù)。使用numpy創(chuàng)建任意大小的數(shù)組并填充任意數(shù)字使用numpy創(chuàng)建一維等差數(shù)組numpy.arange(start,stop,step,dtype=None)參數(shù):start:開(kāi)始位置,數(shù)字,可選項(xiàng),默認(rèn)起始值為0stop:停止位置,數(shù)字step:步長(zhǎng),數(shù)字,可選項(xiàng),默認(rèn)步長(zhǎng)為1,如果指定了step,則還必須給出start。dtype:輸出數(shù)組的類(lèi)型。如果未給出dtype,則從其他輸入?yún)?shù)推斷數(shù)據(jù)類(lèi)型。返回:均勻間隔值的數(shù)組。使用numpy創(chuàng)建一維等差數(shù)組使用numpy創(chuàng)建二維等差數(shù)組numpy.reshape(a,newshape,order=‘C’)參數(shù):a:array_like要重塑的數(shù)組。newshape:int或int的元組新形狀應(yīng)與原始形狀兼容。如果是整數(shù),則結(jié)果將是該長(zhǎng)度的一維數(shù)組。order:{'C','F','A'},可選使用此索引順序讀取a的元素,然后使用此索

溫馨提示

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

評(píng)論

0/150

提交評(píng)論