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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

黑、白

兩種顏色(像素點

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

黑、白、灰

三種顏色(像素點

0-255,其中

0

為黑色,255

為白色,1-254

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

均為

單通道,RGB圖像

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

紅、綠、藍

三色按照某種比例混合而成的。彩色圖像(BGR):opencv庫專用,順序為藍、綠、紅。2.2opencv圖像的加載顯示和保存1、return=cv2.imread(filename,

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

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

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

(用戶可以僅通過調用pyplot就可以使用Matplotlib中所有可視化的類)引用:importmatplotlib.pyplotasplt,簡寫為plt已成為一個不成文的規(guī)定matplotlib庫函數(shù)基本用法(繪圖)3.1plt.figure()用來畫圖,能自定義畫布大小figure(num=None,figsize=None,dpi=None,facecolor=None,edgecolor=None,frameon=True)num:圖像編號或名稱,數(shù)字為編號

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

表示指定通道編號。通道編號需要用“[]”

括起來。mask表示掩模圖像。當統(tǒng)計整幅圖像的直方圖時,將這個值設為None.當統(tǒng)計圖

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

dtype=None,

copy=True,

order='K',

subok=False,

ndmin=0)object:數(shù)組公開數(shù)組接口的任何對象,返回數(shù)組的對象,或任何(嵌套)序列。dtype:數(shù)據(jù)類型,可選使用numpy創(chuàng)建二維數(shù)組使用numpy創(chuàng)建全為0的二維數(shù)組np.zeros(shape,dtype=None,older=‘C’)shape是一個int或一個int元組,用于定義數(shù)組的大小。如果我們僅指定一個int變量,則將返回一維數(shù)組。對于一個整數(shù)元組,將返回給定形狀的數(shù)組。dtype是一個可選參數(shù),默認值為float。它用于指定數(shù)組的數(shù)據(jù)類型,例如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是一個int或一個int元組,用于定義數(shù)組的大小。如果我們僅指定一個int變量,則將返回一維數(shù)組。對于一個整數(shù)元組,將返回給定形狀的數(shù)組。dtype是一個可選參數(shù),默認值為float。它用于指定數(shù)組的數(shù)據(jù)類型,例如intolder:C表示行優(yōu)先,F(xiàn)表示列優(yōu)先(可選參數(shù))使用numpy創(chuàng)建任意大小的數(shù)組并填充任意數(shù)字numpy.full(shape,

fill_value,

dtype=None,

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

(2,

3)

or

2.fill_value:

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

溫馨提示

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

評論

0/150

提交評論