版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第一章OpenCV概述1.1OpenCV概述OpenCV簡(jiǎn)介OpenCV(OpenSourceComputerVisionLibrary):中文名稱為開源計(jì)算機(jī)視覺(jué)庫(kù);OpenCV支持多語(yǔ)言、跨平臺(tái)、功能強(qiáng)大,為計(jì)算機(jī)視覺(jué)專業(yè)開發(fā)人員提供了靈活的開發(fā)接口;OpenCV由C語(yǔ)言和C++編寫,可以運(yùn)行在Linux、Windows、Android和MacOS等平臺(tái)上;OpenCV具有輕量級(jí)的特點(diǎn),提供了Python、Ruby、Matlab等語(yǔ)言的接口;OpenCV中實(shí)現(xiàn)了很多計(jì)算機(jī)視覺(jué)方面的通用算法。1.1OpenCV簡(jiǎn)介1.
OpenCV模塊功能基礎(chǔ)數(shù)據(jù)模塊:包含了與圖像處理有關(guān)的數(shù)據(jù)結(jié)構(gòu)和基本函數(shù)方法;圖像處理模塊:包含了圖像處理相關(guān)的算法,例如圖像濾波、圖像變換、顏色空間轉(zhuǎn)換等;高層用戶界面模塊和媒體輸入/輸出模塊:為用戶提供了圖像的圖形窗口操作功能,例如創(chuàng)建窗口顯示圖像或者視頻等二維特征框架模塊:用于圖像的特征提取,可以從二維圖像中檢測(cè)和提取圖像的特征。1.1OpenCV簡(jiǎn)介1.
OpenCV模塊功能3D重建模塊:包含了相機(jī)校準(zhǔn)和三維重建相關(guān)的內(nèi)容,例如基本的多視角幾何算法、物體的姿態(tài)估計(jì)、三維信息重建等;對(duì)象檢測(cè)模塊:提供了對(duì)象檢測(cè)功能,可以檢測(cè)預(yù)定義的對(duì)象和實(shí)例,例如面部、眼睛、汽車等對(duì)象,同時(shí)可以在圖像中給定圖像的位置;機(jī)器模塊:提供了很多的機(jī)器學(xué)習(xí)算法,例如K近鄰(KNN)、K均值聚類(K-Means)、支持向量機(jī)(SVM)、神經(jīng)網(wǎng)絡(luò)等經(jīng)典算法;計(jì)算攝影:通過(guò)圖像處理技術(shù)來(lái)改善相機(jī)拍攝的圖像、提供了與計(jì)算攝影有關(guān)的算法。1.1OpenCV簡(jiǎn)介2.OpenCV版本OpenCV于1999年由Intel公司的GrayBradiski啟動(dòng),在2000年發(fā)布了第一個(gè)版本。2006.10OpenCV1.02009.9OpenCV2.02015.6OpenCV3.02018OpenCV4.02020.10OpenCV4.51.1OpenCV簡(jiǎn)介3.OpenCV-PythonOpenCV-Python:是OpenCV的Python語(yǔ)言接口優(yōu)點(diǎn):代碼運(yùn)行的速度與原始的C和C++的運(yùn)行速度一樣快使用Python編寫代碼更容易1.2開發(fā)環(huán)境配置開發(fā)環(huán)境的配置需要安裝Python、Numpy包、OpenCV-Python包和vscode(教材上是PyCharm,兩者均可)。1.Python安裝登錄官網(wǎng)/downloads/,下載Python安裝包;選擇Python版本時(shí),請(qǐng)確保選擇Python3.5或更高版本,本課程以Python3.8為例1.2開發(fā)環(huán)境配置1.Python安裝運(yùn)行安裝程序,安裝程序啟動(dòng)后,首先顯示安裝方式界面,勾選界面最下方的“AddtoPython3.8toPath”復(fù)選框;將Python3.8添加到系統(tǒng)的環(huán)境變量PATH中,這樣可以保證在命令行提示符的窗口中,在任意路徑下都可以執(zhí)行Python的相關(guān)命令。選擇“InstallNow”方式按默認(rèn)設(shè)置安裝安裝完成后,在命令行提示符窗口中運(yùn)行“Python”命令,如果安裝正確,則可以進(jìn)入Python的交互環(huán)境1.2開發(fā)環(huán)境配置2.Numpy安裝配置pip源:在Windows的當(dāng)前用戶目錄(一般是C:\Users\用戶名)下,創(chuàng)建一個(gè)名為pip的文件夾;在pip文件夾下創(chuàng)建一個(gè)名為pip.ini的文件;安裝Numpy:打開系統(tǒng)的命令行提示符窗口,在窗口中輸入“pipinstallnumpy”命令并執(zhí)行1.2開發(fā)環(huán)境配置3.OpenCV-Python安裝方法1:pip方式安裝在系統(tǒng)的命令行提示符窗口中輸入“pipinstallopencv-python”;注意:安裝過(guò)程中,pip會(huì)檢查是否安裝了Numpy包,如果沒(méi)有安裝,pip會(huì)自動(dòng)安裝Numpy包1.2開發(fā)環(huán)境配置3.OpenCV-Python安裝方法2:安裝預(yù)編譯包確保系統(tǒng)中已經(jīng)安裝了Python(版本為3.5以上)和Numpy包;訪問(wèn)官網(wǎng)/,選擇Library菜單下的Release選項(xiàng),在頁(yè)面中根據(jù)操作系統(tǒng)選擇合適的版本,一般選擇windows,下載OpenCV4.5.4的發(fā)布文件,文件名為opencv-4.5.4-vc14_v15.exe,將解壓后的build\python\cv2\python-3.8路徑中的cv2.cp38-win_amd64.pyd文件復(fù)制到Python安裝路徑下的“Lib\site-packages\cv2”路徑中即可。1.2開發(fā)環(huán)境配置4.安裝vscodeVSCode的全稱為VisualStudioCode,是微軟公司提供的一個(gè)免費(fèi)的集成開發(fā)環(huán)境可以作Java、C、C#、PHP、Python等語(yǔ)言的開發(fā)環(huán)境訪問(wèn)VSCode官方主頁(yè):/在主頁(yè)中,單擊“DownloadforWindows”,下載安裝程序;運(yùn)行安裝程序,默認(rèn)安裝即可安裝完成后,啟動(dòng)VSCode創(chuàng)建一個(gè)Python文件,選擇“File”菜單下的“NewFile”,將其以.py為擴(kuò)展名進(jìn)行命名,此時(shí)VSCode會(huì)提示用戶安裝Python擴(kuò)展組件,選擇install,即可完成擴(kuò)展組件的安裝1.3案例利用OpenCV讀取圖片文件創(chuàng)建名為“readImage.py”的Python文件,代碼如下:第二章基礎(chǔ)圖像處理2.1圖像處理圖像的讀取、顯示與保存圖像處理過(guò)程讀取圖像數(shù)據(jù)對(duì)圖像進(jìn)行相應(yīng)處理操作查看處理后的結(jié)果(顯示圖像)保存圖像2.1圖像處理1.讀取圖像在對(duì)一副圖像進(jìn)行相應(yīng)處理之前,需要將圖像數(shù)據(jù)讀取出來(lái),讀取操作完成后,可以將讀取到的圖像數(shù)據(jù)賦值給某個(gè)變量,對(duì)圖像進(jìn)行處理就通過(guò)對(duì)該變量進(jìn)行操作來(lái)完成;方法:使用函數(shù)cv2.imread(),該函數(shù)支持各種靜態(tài)圖像格式,例如.bmp、.jpg、.png、.tif等圖像格式語(yǔ)法格式:retval=cv2.imread(filename[,flags])2.1圖像處理1.讀取圖像語(yǔ)法格式:retval=cv2.imread(filename[,flags])參數(shù)說(shuō)明:retval是返回值,值為讀取到的圖像,如果沒(méi)有讀取到圖像,則返回“None”filename表示要讀取圖像的完整文件名flag為讀取標(biāo)記,常用的參數(shù)如下:flag=-1:保持原格式不變flag=0:將圖像調(diào)整為單通道的灰度圖像flag=1:將圖像調(diào)整為3通道的BGR圖像,該值為默認(rèn)值2.1圖像處理應(yīng)用實(shí)例1:使用cv2.imread()讀取一副圖像2.1圖像處理2.顯示圖像圖像處理完成后,通常情況下需要查看圖像處理后的結(jié)果,需要將圖像顯示出來(lái)方法:函數(shù)cv2.imshow()語(yǔ)法格式:None=cv2.imshow(winname,mat)參數(shù)說(shuō)明:winname:顯示圖像的窗口名稱mat:為要顯示的圖像數(shù)據(jù)的變量2.1圖像處理應(yīng)用實(shí)例2:在一個(gè)窗口中顯示讀取的圖像首先通過(guò)cv2.imread()函數(shù)讀取圖像lena.bmp,然后通過(guò)Window函數(shù)創(chuàng)建一個(gè)名為“l(fā)esson”的窗口最后通過(guò)cv2.imshow()函數(shù)在窗口lesson中顯示lena.png圖像2.1圖像處理應(yīng)用實(shí)例2:在一個(gè)窗口中顯示讀取的圖像在實(shí)際應(yīng)用過(guò)程中,可以不創(chuàng)建窗口,直接使用函數(shù)cv2.imshow()引用一個(gè)不存在的窗口,并在其中顯示指定圖像。這樣cv2.imshow函數(shù)實(shí)際上會(huì)完成兩步操作。注意:讀取文件時(shí),文件的名字和路徑必須正確,否則就會(huì)出現(xiàn)錯(cuò)誤error:(-215:Assertionfailed)size.width>0&&size.height>0infunction‘cv::imshow’文件的路徑可以采用相對(duì)路徑,也可以采用絕對(duì)路徑,使用相對(duì)路徑時(shí)要注意python的當(dāng)前路徑2.1圖像處理waitKey()函數(shù)函數(shù)功能:用來(lái)等待按鍵,當(dāng)用戶按下鍵盤后,該語(yǔ)句會(huì)被執(zhí)行,并獲取返回值;語(yǔ)法格式:revtal=cv2.waitKey([delay])參數(shù)說(shuō)明:retval表示返回值,如果沒(méi)有按鍵被按下,則返回-1;如果有按鍵被按下,則返回按鍵的ASCII碼;delay:表示等待鍵盤觸發(fā)的時(shí)間,單位是ms,當(dāng)該值為負(fù)值或者0時(shí),表示無(wú)限等待,默認(rèn)值為02.1圖像處理waitKey()函數(shù)參數(shù)delay為表示等待鍵盤觸發(fā)的時(shí)間,單位是msdelay=0時(shí):程序會(huì)一直等待,直到按下鍵盤按鍵的時(shí)間發(fā)生,才會(huì)執(zhí)行后續(xù)程序delay>0時(shí):則在這個(gè)時(shí)間內(nèi)等待按下鍵盤按鍵,當(dāng)有鍵盤按下時(shí)間發(fā)生時(shí),就繼續(xù)執(zhí)行后續(xù)的語(yǔ)句,如果一直沒(méi)有這樣的時(shí)間發(fā)生,即超過(guò)等待時(shí)間后,繼續(xù)執(zhí)行后續(xù)的語(yǔ)句2.1圖像處理destroyWindow()函數(shù)函數(shù)功能:用來(lái)銷毀或釋放窗口;語(yǔ)法格式:None=cv2.destroyWindow(winname)參數(shù)說(shuō)明:winname為窗口的名稱在實(shí)際使用中,該函數(shù)通常和waitkey()函數(shù)配合使用實(shí)現(xiàn)窗口的釋放2.1圖像處理應(yīng)用實(shí)例2:在一個(gè)窗口中顯示讀取的圖像(完整代碼)2.1圖像處理destroyAllWindows()函數(shù)函數(shù)功能:用來(lái)釋放(銷毀)所有窗口;語(yǔ)法格式:None=cv2.destroyAllWindow()2.1圖像處理3.保存圖像圖像處理完成后,通過(guò)顯示圖像查看處理后的效果,如果滿意,此時(shí)需要將圖像保存到磁盤上方法:函數(shù)cv2.imwrite()語(yǔ)法格式:retval=cv2.imwrite(filename,img[,params])參數(shù)說(shuō)明:retval:返回值,如果保存成功,則返回邏輯值真(True);如果保存不成功,則返回邏輯假(false)filename:要保存的目標(biāo)文件的完整路徑名,包含文件的擴(kuò)展名img:是被保存圖像的變量名params是保存類型參數(shù),是可選的,該參數(shù)針對(duì)特定的格式,對(duì)于jpg圖像,該參數(shù)表示的是圖像的質(zhì)量,用0-100的整數(shù)表示,默認(rèn)值為95;對(duì)于png圖像,該參數(shù)表示的是壓縮級(jí)別,默認(rèn)值為32.1圖像處理應(yīng)用實(shí)例3:將讀取到的圖像保存在當(dāng)前目錄下程序運(yùn)行完成后,在當(dāng)前目錄下,會(huì)出現(xiàn)result.bmp文件2.2視頻處理視頻是非常重要的視覺(jué)信息來(lái)源,是計(jì)算機(jī)視覺(jué)處理過(guò)程中非常重要的也是經(jīng)常要處理的一類信號(hào);視頻實(shí)際上是有一系列圖像構(gòu)成的,這一系列圖像被稱為幀;視頻播放時(shí),以一定的速率顯示每一幀,稱為幀速率,單位是幀/秒,表示一秒內(nèi)所出現(xiàn)的幀數(shù),對(duì)應(yīng)的英文是FPS(FramesPerSecond);如果能夠從視頻獲取每一幀,就可以使用圖像處理的方法對(duì)其進(jìn)行處理,來(lái)達(dá)到視頻處理的目的;OpenCV中的VideoCapture類和VideoWriter類提供了視頻處理功能2.2視頻處理1.讀取視頻方法:使用VideoCapture對(duì)象的read方法,獲取視頻中的幀,每一幀都是一副圖像,該方法的返回值為兩個(gè),分別為幀標(biāo)記和每一幀的圖像數(shù)據(jù)。應(yīng)用實(shí)例1:編寫程序,讀取當(dāng)前目錄下的視頻文件video.mp42.2視頻處理2.播放視頻方法:OpenCV播放視頻實(shí)際上是逐幀讀取視頻和顯示每一幀的圖像。應(yīng)用實(shí)例2:編寫程序,讀取當(dāng)前目錄下的視頻文件video.mp4并播放該視頻2.2視頻處理2.播放視頻計(jì)算機(jī)視覺(jué)要處理的對(duì)象更多的時(shí)候是從攝像設(shè)備中實(shí)時(shí)讀入的視頻流方法:video=cv2.VideoCapture(0)代碼表示從攝像頭錄入的視頻作為數(shù)據(jù)源創(chuàng)建VideoCapture對(duì)象,此時(shí)程序運(yùn)行結(jié)果為播放的視頻是從攝像頭實(shí)時(shí)錄入的內(nèi)容。2.3圖像屬性使用imread()函數(shù)讀入圖像時(shí),對(duì)于RGB彩色圖像來(lái)說(shuō),會(huì)按照?qǐng)D像行的方向依次讀取圖像B通道、G通道和R通道的像素點(diǎn),并將像素點(diǎn)以行為單位存儲(chǔ)在ndarray的列中M行N列的RGB圖像的存儲(chǔ)形式如圖:2.3圖像屬性在圖像處理的過(guò)程中,經(jīng)常需要獲取圖像的屬性,常用的屬性如下:shape:如果是彩色圖像,則返回包含行數(shù)、列數(shù)、通道數(shù)的數(shù)組,如果是灰度圖像或二值圖像,則僅返回行數(shù)和列數(shù)。通過(guò)該屬性的返回值是否包含通道數(shù),可以判斷一副圖像是彩色圖像還是灰度圖像(或二值圖像)size:返回圖像的像素?cái)?shù)目,其值為“行*列*通道數(shù)”灰度圖像或二值圖像的通道數(shù)為1dtype:返回圖像像素值的數(shù)據(jù)類型2.3圖像屬性應(yīng)用案例1:編寫程序,觀察圖像的常用屬性2.4灰度處理計(jì)算機(jī)將圖像的灰度共有256級(jí),即0-255,其中0表示黑色,255表示白色,中間的數(shù)值為黑色到白色的過(guò)度顏色;計(jì)算機(jī)使用一個(gè)字節(jié)來(lái)存儲(chǔ)一個(gè)像素值OpenCV在表示一副灰度圖像(黑白圖像)時(shí),使用單通道的二維數(shù)組來(lái)表示2.4灰度處理應(yīng)用實(shí)例1:生成一副灰度圖像,圖像中的像素值為隨機(jī)生成2.4灰度處理應(yīng)用實(shí)例2:編寫程序,讀取當(dāng)前目錄下的lena.png圖像,并將其轉(zhuǎn)換為灰度圖像2.5通道操作RGB圖像中,圖像是由R通道、G通道、B通道三個(gè)通道構(gòu)成的,在OpenCV中,通道是按照B通道->G通道->R通道存儲(chǔ)的在圖像處理過(guò)程中,可以根據(jù)需要對(duì)通道進(jìn)行拆分和合并1.通道拆分針對(duì)RGB圖像,可以拆分成R通道、G通道、B通道方法:通過(guò)索引方式拆分通道通過(guò)函數(shù)方式拆分通道(split函數(shù))2.5通道操作通過(guò)索引方式拆分通道應(yīng)用案例1:編寫程序,演示圖像通道拆分及通道值改變對(duì)彩色圖像的影響2.5通道操作通過(guò)函數(shù)方式拆分通道函數(shù)cv2.split()能夠拆分圖像的通道,使用方法如下:b,g,r=cv2.split(img)上述語(yǔ)句與如下語(yǔ)句是等價(jià)的b=cv2.split(img)[0]g=cv2.split(img)[1]r=cv2.split(img)[2]2.5通道操作應(yīng)用案例2:編寫程序,使用函數(shù)cv2.split()拆分圖像通道2.5通道操作2.通道合并通道合并是通道拆分的逆過(guò)程,通過(guò)合并通道可以將三個(gè)通道的灰度圖像構(gòu)成一副彩色圖像方法:使用函數(shù)cv2.merge()語(yǔ)句:bgr=cv2.merge([b,g,r])2.5通道操作2.通道合并應(yīng)用實(shí)例3:編寫程序,lena.png圖像進(jìn)行通道拆分,然后,分別按照r通道、g通道、b通道的順序和g通道、r通道、b通道的順序進(jìn)行合并2.6感興趣區(qū)域(ROI)在圖像處理的過(guò)程中,通常會(huì)對(duì)圖像中的某個(gè)區(qū)域比較感興趣,則這個(gè)區(qū)域被稱為感興趣區(qū)域(RegionofInterest,ROI)。設(shè)定ROI后,可以對(duì)該區(qū)域進(jìn)行整體操作。例如,將一個(gè)感興趣區(qū)域A賦值給變量B,然后將變量B賦值給另一個(gè)區(qū)域C,從而達(dá)到在區(qū)域C內(nèi)復(fù)制區(qū)域A的目的。舉例:如左圖,假設(shè)當(dāng)前圖像名稱為img,圖中數(shù)字分別表示行號(hào)和列號(hào),則圖中黑色ROI可以表示為img[200:400,200:400]語(yǔ)句:將黑色的ROI復(fù)制到該區(qū)域的右側(cè)a=img[200:400,200:400]img[200:400,600:800]=a2.6感興趣區(qū)域(ROI)應(yīng)用實(shí)例1:獲取圖像lena的頭部信息,并將其顯示出來(lái)2.6感興趣區(qū)域(ROI)應(yīng)用實(shí)例2:為lena.png圖片打碼,使用矩形遮住圖片中人物的眼部,矩形中的像素值為隨機(jī)生成2.6感興趣區(qū)域(ROI)應(yīng)用實(shí)例3:編寫程序,將一副圖像中ROI賦值到另一幅圖像2.7圖像運(yùn)算圖像運(yùn)算是圖像處理中的一種基礎(chǔ)操作,是指以圖像為單位進(jìn)行操作,即圖像中所有的像素都參與運(yùn)算,得到的結(jié)果是一副與原來(lái)灰度分布不同的新圖像圖形運(yùn)算主要包括算術(shù)運(yùn)算和位運(yùn)算算術(shù)運(yùn)算是指對(duì)兩幅或兩幅以上的圖像對(duì)應(yīng)像素的灰度值做加法、減法、乘法或除法等運(yùn)算本節(jié)中以算數(shù)運(yùn)算中的加法運(yùn)算為例進(jìn)行介紹2.7圖像運(yùn)算1.加法運(yùn)算方法:通過(guò)運(yùn)算符“+”對(duì)圖像進(jìn)行加法運(yùn)算通過(guò)函數(shù)cv2.add()函數(shù)對(duì)圖像進(jìn)行加法運(yùn)算運(yùn)算規(guī)則:運(yùn)算符“+”對(duì)圖像進(jìn)行加法運(yùn)算圖像a和圖像b進(jìn)行求和運(yùn)算時(shí),規(guī)則如下:如果兩個(gè)圖像對(duì)應(yīng)像素值的和小于或等于255,則直接相加得到運(yùn)算結(jié)果,例如,像素值28和像素值36,得到計(jì)算結(jié)果57。如果兩個(gè)圖像對(duì)應(yīng)的像素值的和大于255,則將運(yùn)算結(jié)果對(duì)256取模,例如255+58=313,大于255,則計(jì)算(255+58)%256=57,得到計(jì)算結(jié)果為57。因此上面的公式可以簡(jiǎn)化為a+b=mod(a+b,256)2.7圖像運(yùn)算1.加法運(yùn)算應(yīng)用實(shí)例1:使用隨機(jī)數(shù)數(shù)組模擬灰度圖像,觀察使用“+”對(duì)像素值求和的結(jié)果注意:要保證數(shù)組中的元素的數(shù)據(jù)類型是uint8,這樣相加的結(jié)果才能對(duì)256做取模運(yùn)算。2.7圖像運(yùn)算1.加法運(yùn)算cv2.add()函數(shù)計(jì)算規(guī)則如下:如果兩個(gè)像素值的和小于或等于255,則直接相加得到運(yùn)算結(jié)果,例如像素值28和像素值36相加,得到計(jì)算結(jié)果64。如果兩個(gè)像素值的和大于255,則將運(yùn)算結(jié)果處理為飽和值255,例如255+58=313,大于255,則得到計(jì)算結(jié)果255。使用方法:形式1:計(jì)算結(jié)果=cv2.add(圖像1,圖像2),函數(shù)的兩個(gè)參數(shù)都是圖像,此時(shí)參與運(yùn)算的圖像大小和類型必須一致形式2:計(jì)算結(jié)果=cv2.add(數(shù)值,圖像),第1個(gè)參數(shù)是數(shù)值,第2個(gè)參數(shù)是圖像,此時(shí)將超過(guò)圖像飽和值的數(shù)值處理為飽和值形式2:計(jì)算結(jié)果=cv2.add(圖像,數(shù)值),第1個(gè)參數(shù)是圖像,第2個(gè)參數(shù)是數(shù)值,此時(shí)將超過(guò)圖像飽和值的數(shù)值處理為飽和值2.7圖像運(yùn)算1.加法運(yùn)算應(yīng)用實(shí)例2:使用隨機(jī)數(shù)數(shù)組模擬灰度圖像,使用“cv2.add()”函數(shù)相加觀察結(jié)果2.7圖像運(yùn)算1.加法運(yùn)算應(yīng)用實(shí)例3:分別使用加號(hào)運(yùn)算符和函數(shù)cv2.add()函數(shù)計(jì)算兩幅灰度圖像的像素值之和,觀察處理結(jié)果分析:使用加號(hào)運(yùn)算符計(jì)算時(shí),將和大于255的值進(jìn)行取模處理,取模后大于255的這部分值變小了,導(dǎo)致本來(lái)應(yīng)該更亮的像素點(diǎn)變得暗了,相加所得得圖像看起來(lái)并不自然。使用函數(shù)cv2.add()函數(shù)計(jì)算時(shí),將和大于255的值處理為飽和值255,圖像像素值相加后,讓圖像的像素值增加了,圖像整體變亮。2.7圖像運(yùn)算2.圖像加權(quán)和圖像加權(quán)和:計(jì)算兩幅圖像的像素值之和時(shí),將每幅圖像的權(quán)重考慮進(jìn)來(lái),可以使用公式表示:saturate()表示取飽和值(最大值)圖像進(jìn)行加權(quán)和計(jì)算時(shí),src1和src2必須大小、類型相同,它們可以是任意數(shù)據(jù)類型,也可以有任意數(shù)量的通道數(shù)(灰度圖像或彩色圖像),只要二者相同即可。OpenCV中,函數(shù)cv2.addWeighted(),用來(lái)實(shí)現(xiàn)圖像的加權(quán)和,語(yǔ)法格式為:dst=cv2.addWeighted(src1,alpha,src2,beta,gamma)Alpha和beta是圖像src1和src2所對(duì)應(yīng)的系數(shù)(權(quán)重),它們的和可以等于1也可以不等于1,參數(shù)gamma,可以為0,但是該參數(shù)是必選參數(shù),不能省略??梢詫D像加權(quán)和的式子理解為:結(jié)果圖像=圖像1*系數(shù)1+圖像2*系數(shù)2+亮度調(diào)節(jié)2.7圖像運(yùn)算2.圖像加權(quán)和應(yīng)用實(shí)例1:使用數(shù)組演示函數(shù)cv2.addWeighted()的使用應(yīng)用實(shí)例2:使用函數(shù)cv2.addWeight()對(duì)兩幅圖像進(jìn)行加權(quán)混合,觀察處理結(jié)果2.7圖像運(yùn)算2.圖像加權(quán)和練習(xí):使用函數(shù)cv2.addWeight()將一副圖像的ROI混合在另外一副圖像中,結(jié)果如圖所示2.7圖像運(yùn)算3.位運(yùn)算位運(yùn)算是指按位運(yùn)算,即將要進(jìn)行運(yùn)算的兩個(gè)操作數(shù)轉(zhuǎn)換成二進(jìn)制數(shù),然后按位對(duì)齊進(jìn)行運(yùn)算。位運(yùn)算包括四種運(yùn)算方式,分別是按位與運(yùn)算、按位或運(yùn)算、按位非運(yùn)算和按位異或運(yùn)算。計(jì)算規(guī)則如下:
按位與運(yùn)算按位或運(yùn)算按位異或運(yùn)算按位非運(yùn)算操作數(shù)111000100110001001100010011000100操作數(shù)2110110101101101011011010
結(jié)果110000001101111000011110001110112.7圖像運(yùn)算3.位運(yùn)算-按位與運(yùn)算按位與運(yùn)算是指將數(shù)值轉(zhuǎn)換為二進(jìn)制后,在對(duì)應(yīng)的位置上進(jìn)行與運(yùn)算,如下表所示方法:cv2.bitwise_and()函數(shù)語(yǔ)法格式:dst=cv2.bitwise_and(src1,src2[,mask])dst表示與輸入值具有同樣大小的array輸出值src1表示第一個(gè)array或scalar類型的輸入值src2表示第二個(gè)array或scalar類型的輸入值mask表示可選操作掩碼,8為單通道array數(shù)值十進(jìn)制數(shù)二進(jìn)制數(shù)數(shù)值119811000110數(shù)值221911011011按位與運(yùn)算結(jié)果194110000102.7圖像運(yùn)算3.位運(yùn)算-按位與運(yùn)算特點(diǎn):將任何數(shù)值N與數(shù)值0進(jìn)行按位操作,都會(huì)得到數(shù)值0將任何數(shù)值N(這里僅考慮8位值)與數(shù)值255(8位二進(jìn)制數(shù)是11111111)進(jìn)行按位操作,都會(huì)得到數(shù)值N本身。根據(jù)以上特點(diǎn),可以構(gòu)造一副掩膜圖像M,掩膜圖像M中只有兩個(gè)值,0和255,將掩膜圖像M與一副灰度圖像G進(jìn)行按位與操作,在結(jié)果圖R中:與掩膜圖像M中的數(shù)值255對(duì)應(yīng)位置上的值,來(lái)源于灰度圖像G與掩膜圖像M中的數(shù)值0對(duì)應(yīng)位置上的值位0(黑色)按位與運(yùn)算二進(jìn)制值十進(jìn)制值二進(jìn)制值十進(jìn)制值數(shù)值N1101101121911011011219特殊值(0及255)00000000011111111255運(yùn)算結(jié)果00000000011011011219說(shuō)明數(shù)值219與數(shù)值0按位與得到0數(shù)值219與數(shù)值255按位與,結(jié)果保持自身值219不變2.7圖像運(yùn)算3.位運(yùn)算-按位與運(yùn)算應(yīng)用案例1:使用數(shù)組演示與掩膜圖像的按位與運(yùn)算2.7圖像運(yùn)算3.位運(yùn)算-按位與運(yùn)算應(yīng)用案例2:構(gòu)造一個(gè)掩膜圖像,使用與運(yùn)算保留圖像中被掩膜指定的部分注意:也可以對(duì)彩色圖像進(jìn)行掩膜處理2.7圖像運(yùn)算3.位運(yùn)算-按位與運(yùn)算應(yīng)用案例2:構(gòu)造一個(gè)掩膜圖像,使用與運(yùn)算保留彩色圖像中被掩膜指定的部分2.7圖像運(yùn)算4.位運(yùn)算-按位或運(yùn)算按位或運(yùn)算是指將數(shù)值轉(zhuǎn)換為二進(jìn)制后,在對(duì)應(yīng)的位置上進(jìn)行與運(yùn)算,如下表所示方法:cv2.bitwise_or()函數(shù)語(yǔ)法格式:dst=cv2.bitwise_or(src1,src2[,mask])dst表示與輸入值具有同樣大小的array輸出值src1表示第一個(gè)array或scalar類型的輸入值src2表示第二個(gè)array或scalar類型的輸入值mask表示可選操作掩碼,8為單通道array數(shù)值十進(jìn)制數(shù)二進(jìn)制數(shù)數(shù)值119811000110數(shù)值221911011011按位或運(yùn)算結(jié)果223110111112.7圖像運(yùn)算4.位運(yùn)算-按位或運(yùn)算特點(diǎn):將任何數(shù)值N與數(shù)值0進(jìn)行按位操作,結(jié)果為數(shù)值N將任何數(shù)值N(這里僅考慮8位值)與數(shù)值255(8位二進(jìn)制數(shù)是11111111)進(jìn)行按位或操作,結(jié)果為255。按位或運(yùn)算二進(jìn)制值十進(jìn)制值二進(jìn)制值十進(jìn)制值數(shù)值N1101101121911011011219特殊值(0及255)00000000011111111255運(yùn)算結(jié)果1101101121911111111255說(shuō)明數(shù)值219與數(shù)值0按位或,結(jié)果保持自身值219不變數(shù)值219與數(shù)值255按位或,結(jié)果為2552.7圖像運(yùn)算5.位運(yùn)算-按位異或運(yùn)算按位異或運(yùn)算是指將數(shù)值轉(zhuǎn)換為二進(jìn)制后,在對(duì)應(yīng)的位置上進(jìn)行與運(yùn)算,如下表所示方法:cv2.bitwise_xor()函數(shù)語(yǔ)法格式:dst=cv2.bitwise_xor(src1,src2[,mask])dst表示與輸入值具有同樣大小的array輸出值src1表示第一個(gè)array或scalar類型的輸入值src2表示第二個(gè)array或scalar類型的輸入值mask表示可選操作掩碼,8為單通道array數(shù)值十進(jìn)制數(shù)二進(jìn)制數(shù)數(shù)值119811000110數(shù)值221911011011按位異或運(yùn)算結(jié)果29000111012.7圖像運(yùn)算5.位運(yùn)算-按位異或運(yùn)算特點(diǎn):將任何數(shù)值N與數(shù)值0進(jìn)行按位操作,結(jié)果為數(shù)值N將任何數(shù)值N(這里僅考慮8位值)與數(shù)值255(8位二進(jìn)制數(shù)是11111111)進(jìn)行按位或操作,結(jié)果為255。按位或運(yùn)算二進(jìn)制值十進(jìn)制值二進(jìn)制值十進(jìn)制值數(shù)值N1101101121911011011219特殊值(0及255)00000000011111111255運(yùn)算結(jié)果110110112190010010036說(shuō)明數(shù)值219與數(shù)值0按位或,結(jié)果保持自身值219不變數(shù)值219與數(shù)值255按位或,結(jié)果為對(duì)N取反2.7圖像運(yùn)算應(yīng)用案例1:編寫程序,對(duì)兩幅圖像進(jìn)行按位運(yùn)算2.7圖像運(yùn)算6.掩膜
OpenCV中很多函數(shù)都會(huì)指定一個(gè)掩膜,也被稱為掩碼,例如:計(jì)算結(jié)果=cv2.add(參數(shù)1,參數(shù)2,掩模)當(dāng)使用掩模參數(shù)時(shí),操作只會(huì)在掩模值為非空的像素點(diǎn)上執(zhí)行,并將其他像素點(diǎn)的值置為0舉例:img1,img2,mask和img3的原始值為:經(jīng)過(guò)img3=cv2.add(img1,img2,mask=mask)運(yùn)算后,得到img3為:2.7圖像運(yùn)算6.掩膜
應(yīng)用案例1:掩膜的使用2.7圖像運(yùn)算6.掩膜
位運(yùn)算的函數(shù)中也包含掩模參數(shù)彩色圖像中,以按位與運(yùn)算為例,為了實(shí)現(xiàn)將彩色圖像與掩模圖像進(jìn)行計(jì)算,由于按位與運(yùn)算要求參與運(yùn)算的數(shù)據(jù)要具有相同的通道數(shù),所以無(wú)法直接將彩色圖像與單通道的掩模圖像進(jìn)行按位與運(yùn)算,我們通過(guò)將掩模圖像轉(zhuǎn)換為BGR模式的彩色圖像,讓彩色圖像與掩模圖像進(jìn)行按位與運(yùn)算,從而實(shí)現(xiàn)掩模操作。另一種方法,使用掩模參數(shù),該參數(shù)時(shí)8位單通道的圖像,所以可以將掩模圖像作為按位與函數(shù)cv2.bitwise_and(src1,src2[,[mask]])中參數(shù)mask值,完成掩模運(yùn)算。此時(shí),讓待處理的彩色圖像同時(shí)作為該函數(shù)的參數(shù)src1和src2,完成按位與運(yùn)算,即可得到由掩??刂频牟噬珗D像。2.7圖像運(yùn)算6.掩膜
應(yīng)用案例2:構(gòu)造一個(gè)掩模圖像,將該掩模圖像作為按位與函數(shù)的掩模參數(shù),實(shí)現(xiàn)保留圖像的指定部分2.8
案例案例2:編寫程序,針對(duì)圖像中的某個(gè)區(qū)域做處理圖像處理過(guò)程中,某些情況下,希望對(duì)圖像的局部區(qū)域做處理,其他區(qū)域保持不變,此時(shí)需要提取這個(gè)需要處理的特定區(qū)域,即ROI區(qū)域,對(duì)這個(gè)特定區(qū)域處理完成后,在重新賦值給該圖像的這個(gè)區(qū)域2.8案例案例3:圖像掩模處理,通過(guò)掩模獲取圖像中的某個(gè)區(qū)域掩模圖像由黑色和白色兩種顏色構(gòu)成,并且掩模圖像為單通道圖像圖像通過(guò)掩模可將感興趣的區(qū)域獲取出來(lái)第三章圖像繪制第三章圖像繪制OpenCV提供了繪制線段、橢圓、多邊形等圖形的功能OpenCV通過(guò)鼠標(biāo)事件、利用鼠標(biāo)事件識(shí)別鼠標(biāo)操作實(shí)現(xiàn)與圖像的交互功能OpenCV圖形繪制的步驟如下:繪制畫布畫布布局繪制圖形展示圖形保存圖像3.1繪制線段與箭頭線1.繪制線段方法:函數(shù)cv2.line()語(yǔ)法格式:cv2.line(img,pt1,pt2,color[,thickness[,lineType[,shift]]])參數(shù)說(shuō)明:img為用于繪制圖像的圖像。pt1為直線段的起點(diǎn)坐標(biāo)。pt2為直線段的終點(diǎn)坐標(biāo)。color為線條的顏色。通常使用BGR模型表示顏色,如(255,0,0)表示藍(lán)色。thickness表示線條粗細(xì)。默認(rèn)值為1,設(shè)置為-1時(shí)表示繪制填充圖形(繪制直線時(shí),不能設(shè)置為-1)。3.1繪制線段與箭頭線1.繪制線段lineType表示線條類型,默認(rèn)值為cv2.Line_8。線條類型可設(shè)置常量如表所示。shift表示坐標(biāo)的數(shù)值精度,一般情況下不需要設(shè)置。注意:參數(shù)中img、pt1、pt2、color為必須參數(shù),其它為可選項(xiàng)。線條類型參數(shù)說(shuō)明cv2.FILLED填充cv2.LINE_44連接類型cv2.LINE_88連接類型cv2.LINE_AA抗鋸齒,該參數(shù)會(huì)讓線條更平滑3.1繪制基本圖形1.繪制線段應(yīng)用實(shí)例1:在給定的畫布上繪制線段3.1繪制基本圖形2.繪制箭頭線方法:函數(shù)cv2.arrowedLine()語(yǔ)法格式:cv2.arrowedLine(img,pt1,pt2,color[,thickness[,line_type[,shift[,tipLength]]]])參數(shù)說(shuō)明:img:要畫的直線所在的圖像,也稱為畫布。。pt1:直線的起點(diǎn)位置,是一個(gè)坐標(biāo)點(diǎn),類似(X,Y)這樣。pt2:直線的終點(diǎn)位置,是一個(gè)坐標(biāo)點(diǎn),類似(X,Y)這樣。color為線條的顏色。通常使用BGR模型表示顏色,如(255,0,0)表示藍(lán)色。thickness表示線條粗細(xì)。默認(rèn)值為1,設(shè)置為-1時(shí)表示繪制填充圖形(繪制直線時(shí),不能設(shè)置為-1)。3.1繪制基本圖形2.繪制箭頭線lineType表示線條類型,默認(rèn)值為cv2.Line_8。線條類型可設(shè)置常量如表所示。shift表示坐標(biāo)的數(shù)值精度,一般情況下不需要設(shè)置。tipLength表示箭頭因數(shù),即箭頭尖端的長(zhǎng)度相對(duì)線段的長(zhǎng)度為比例多少注意:參數(shù)中img、pt1、pt2、color為必須參數(shù),其它為可選項(xiàng)。線條類型參數(shù)說(shuō)明cv2.FILLED填充cv2.LINE_44連接類型cv2.LINE_88連接類型cv2.LINE_AA抗鋸齒,該參數(shù)會(huì)讓線條更平滑3.1繪制基本圖形2.繪制箭頭線應(yīng)用實(shí)例1:繪制帶有箭頭的線段3.1繪制基本圖形2.繪制箭頭線練習(xí):繪制交通標(biāo)志,如圖,畫布大小為300*200,畫布顏色為(110,0,0)3.1繪制基本圖形3.繪制矩形方法:函數(shù)cv2.rectangle()語(yǔ)法格式:cv2.rectangle(img,pt1,pt2,color[,thickness[,lineType[,shift]]])參數(shù)說(shuō)明:img:要畫的矩形所在的圖像,也稱為畫布。pt1:矩形左上角的位置,是一個(gè)坐標(biāo)點(diǎn),類似(X,Y)這樣。pt2:矩形右下角的位置,是一個(gè)坐標(biāo)點(diǎn),類似(X,Y)這樣。color為線條的顏色。通常使用BGR模型表示顏色,如(255,0,0)表示藍(lán)色。thickness表示線條粗細(xì)。默認(rèn)值為1,設(shè)置為-1時(shí)表示繪制填充圖形(繪制直線時(shí),不能設(shè)置為-1)。3.1繪制基本圖形3.繪制矩形lineType表示線條類型,默認(rèn)值為cv2.Line_8。線條類型可設(shè)置常量如表所示。shift表示坐標(biāo)的數(shù)值精度,一般情況下不需要設(shè)置。注意:參數(shù)中img、pt1、pt2、color為必須參數(shù),其它為可選項(xiàng)。線條類型參數(shù)說(shuō)明cv2.FILLED填充cv2.LINE_44連接類型cv2.LINE_88連接類型cv2.LINE_AA抗鋸齒,該參數(shù)會(huì)讓線條更平滑3.1繪制基本圖形3.繪制矩形應(yīng)用實(shí)例1:在給定的畫布上繪制矩形3.1繪制基本圖形4.繪制填充圖形方法:函數(shù)cv2.fillConvexPoly()語(yǔ)法格式:cv2.fillConvexPoly(img,points,color[,lineType[,shift]])參數(shù)說(shuō)明:img:要畫的直線所在的圖像,也稱為畫布。points:多邊形點(diǎn)坐標(biāo)數(shù)組color為填充的顏色。通常使用BGR模型表示顏色,如(255,0,0)表示藍(lán)色。3.1繪制基本圖形4.繪制填充圖形lineType表示線條類型,默認(rèn)值為cv2.Line_8。線條類型可設(shè)置常量如表所示。shift表示坐標(biāo)的數(shù)值精度,一般情況下不需要設(shè)置。注意:參數(shù)中img、points、color為必須參數(shù),其它為可選項(xiàng)。線條類型參數(shù)說(shuō)明cv2.FILLED填充cv2.LINE_44連接類型cv2.LINE_88連接類型cv2.LINE_AA抗鋸齒,該參數(shù)會(huì)讓線條更平滑3.1繪制基本圖形4.繪制填充圖形應(yīng)用實(shí)例1:繪制房屋的簡(jiǎn)筆畫3.1繪制基本圖形5.繪制圓形方法:函數(shù)cv2.circle()語(yǔ)法格式:cv2.circle(img,center,radius,color[,thickness[,lineType[,shift]]])參數(shù)說(shuō)明:img:要畫的直線所在的圖像,也稱為畫布。center:圓心坐標(biāo)radius:圓的半徑color為線條的顏色。通常使用BGR模型表示顏色,如(255,0,0)表示藍(lán)色。thickness表示線條粗細(xì)。默認(rèn)值為1,設(shè)置為-1時(shí)表示繪制填充圖形(繪制直線時(shí),不能設(shè)置為-1)。3.1繪制基本圖形5.繪制圓形lineType表示線條類型,默認(rèn)值為cv2.Line_8。線條類型可設(shè)置常量如表所示。shift表示坐標(biāo)的數(shù)值精度,一般情況下不需要設(shè)置。注意:參數(shù)中img、center、radius、color為必須參數(shù),其它為可選項(xiàng)。線條類型參數(shù)說(shuō)明cv2.FILLED填充cv2.LINE_44連接類型cv2.LINE_88連接類型cv2.LINE_AA抗鋸齒,該參數(shù)會(huì)讓線條更平滑3.1繪制基本圖形5.繪制圓形應(yīng)用實(shí)例1:在給定的畫布上繪制圓形圖形3.1繪制基本圖形5.繪制圓形練習(xí)1:繪制奧運(yùn)五環(huán)標(biāo)志3.1繪制基本圖形6.繪制橢圓方法:函數(shù)cv2.ellipse()語(yǔ)法格式:cv2.ellipse(img,center,axes,rotateAngle,startAngle,endAngle,color[,thickness[,lineType[,shift]]])參數(shù)說(shuō)明:img:要畫的直線所在的圖像,也稱為畫布。center:橢圓的圓心坐標(biāo)axes:橢圓的長(zhǎng)軸和短軸的長(zhǎng)度,數(shù)據(jù)類型為元組rotateAngle:橢圓旋轉(zhuǎn)的角度startAngle:橢圓弧的起始角度endAngle:橢圓弧的終止角度3.1繪制基本圖形6.繪制橢圓color為線條的顏色。通常使用BGR模型表示顏色,如(255,0,0)表示藍(lán)色。thickness表示線條粗細(xì)。默認(rèn)值為1,設(shè)置為-1時(shí)表示繪制填充圖形(繪制直線時(shí),不能設(shè)置為-1)。lineType表示線條類型,默認(rèn)值為cv2.Line_8。線條類型可設(shè)置常量如表所示。shift表示坐標(biāo)的數(shù)值精度,一般情況下不需要設(shè)置。注意:img,center,axes,rotateAngle,startAngle,endAngle,color為必須參數(shù),其它為可選項(xiàng)。線條類型參數(shù)說(shuō)明cv2.FILLED填充cv2.LINE_44連接類型cv2.LINE_88連接類型cv2.LINE_AA抗鋸齒,該參數(shù)會(huì)讓線條更平滑3.1繪制基本圖形6.繪制橢圓應(yīng)用實(shí)例1:在給定的畫布上繪制橢圓圖形3.1繪制基本圖形7.繪制多邊形方法:函數(shù)cv2.polylines()語(yǔ)法格式:cv2.polylines(img,pts,isClosed,color[,thickness[,lineType[,shift]]])參數(shù)說(shuō)明:img:要畫的直線所在的圖像,也稱為畫布。pts:多邊形各邊的坐標(biāo)點(diǎn)組成的一個(gè)列表,是一個(gè)numpy的數(shù)組類型isClosed:為True時(shí),繪制封閉多邊形;否則,依次連接各個(gè)頂點(diǎn),繪制一條曲線color為線條的顏色。通常使用BGR模型表示顏色,如(255,0,0)表示藍(lán)色。thickness表示線條粗細(xì)。默認(rèn)值為1,設(shè)置為-1時(shí)表示繪制填充圖形(繪制直線時(shí),不能設(shè)置為-1)。3.1繪制基本圖形7.繪制多邊形lineType表示線條類型,默認(rèn)值為cv2.Line_8。線條類型可設(shè)置常量如表所示。shift表示坐標(biāo)的數(shù)值精度,一般情況下不需要設(shè)置。注意:img,pts,isClosed,color為必須參數(shù),其它參數(shù)為可選項(xiàng)線條類型參數(shù)說(shuō)明cv2.FILLED填充cv2.LINE_44連接類型cv2.LINE_88連接類型cv2.LINE_AA抗鋸齒,該參數(shù)會(huì)讓線條更平滑3.1繪制基本圖形7.繪制多邊形應(yīng)用實(shí)例1:在指定的畫布上繪制多邊形圖形3.2添加文字與其他繪圖函數(shù)1.添加文字方法:函數(shù)cv2.putText()語(yǔ)法格式:cv2.putText(img,text,org,fontFace,fontScale,color[,thickness[,lineType[,bottomLeftOrigin]]])參數(shù)說(shuō)明:img:要畫的直線所在的圖像,也稱為畫布。text:文字內(nèi)容org:文本左下角的位置3.2添加文字與其他繪圖函數(shù)1.添加文字fontFace:字體類型,可選參數(shù)值如下,上述類型的字體可以結(jié)合FONT_HERSHEY_ITALIC一起來(lái)使用,使字體產(chǎn)生斜體效果。值含義cv.FONT_HERSHEY_SIMPLEX正常大小的sans-serif字體cv.FONT_HERSHEY_PLAIN小號(hào)sans-serif字體cv.FONT_HERSHEY_DUPLEX正常大小的sans-serif字體(比FONT_HERSHEY_SIMPLEX更復(fù)雜)cv.FONT_HERSHEY_COMPLEX正常大小的serif字體cv.FONT_HERSHEY_TRIPLEX正常大小的serif字體(比FONT_HERSHEY_COMPLEX更復(fù)雜)cv.FONT_HERSHEY_COMPLEX_SMALLFONT_HERSHEY_COMPLEX字體簡(jiǎn)化版cv.FONT_HERSHEY_SCRIPT_SIMPLEX手寫風(fēng)格的字體cv.FONT_HERSHEY_SCRIPT_COMPLEXFONT_HERSHEY_SCRIPT_SIMPLEX字體的進(jìn)階版cv.FONT_ITALIC斜體標(biāo)記3.2添加文字與其他繪圖函數(shù)1.添加文字fontScale:縮放比例,用該值乘以程序字體默認(rèn)大小即為字體大小color:字體顏色,顏色值為BGR,即:(0,0,255)為紅色thickness:字體線條寬度lineType:表示線條類型,默認(rèn)值為cv2.Line_8,線條類型可設(shè)置常量如表所示bottomLeftOrigin:為文本方向,默認(rèn)值為False;設(shè)置為True時(shí),文本為垂直鏡像效果。線條類型參數(shù)說(shuō)明cv2.FILLED填充cv2.LINE_44連接類型cv2.LINE_88連接類型cv2.LINE_AA抗鋸齒,該參數(shù)會(huì)讓線條更平滑3.2添加文字與其他繪圖函數(shù)1.添加文字繪制中文字體使用cv2.putText()函數(shù)繪制中文字體時(shí)會(huì)出現(xiàn)亂碼,解決方案如下:(1)Python+OpenCV+FreeType(2)Python+OpenCV+PIL使用方案(2)解決該問(wèn)題,使用PIL實(shí)現(xiàn)中文的輸出,具體方法如下:OpenCV圖片格式轉(zhuǎn)換成PIL的圖片格式;使用PIL繪制文字;PIL圖片格式轉(zhuǎn)換成OpenCV的圖片格式;3.2添加文字與其他繪圖函數(shù)1.添加文字應(yīng)用案例1:在指定的畫布上添加國(guó)慶、中秋宣傳語(yǔ)3.2添加文字與其他繪圖函數(shù)2.其他繪圖函數(shù)函數(shù)cv2.drawMarker():作用:繪制指定的標(biāo)記語(yǔ)法格式:cv2.drawMarker(img,position,color[,markerType[,markerSize[,thickness[,line_type]]]])參數(shù)說(shuō)明:img:標(biāo)記所在的矩形或圖像position:坐標(biāo),是一個(gè)包含兩個(gè)數(shù)字的tuple(必需是tuple),表示(x,y)color:顏色,是一個(gè)包含三個(gè)數(shù)字的tuple或list,表示(b,g,r)3.2添加文字與其他繪圖函數(shù)2.其他繪圖函數(shù)markerType:點(diǎn)的類型。取值0-6,有相應(yīng)的宏定義與之對(duì)應(yīng),如下表所示。數(shù)值宏定義說(shuō)明0cv2.MARKER_CROSS十字線(橫豎兩根線)1cv2.MARKER_TILTED_CROSS交叉線(斜著兩根線)2cv2.MARKER_STAR米字線(橫豎加斜著共四根線)3cv2.MARKER_DIAMOND旋轉(zhuǎn)45度的正方形4cv2.MARKER_SQUARE正方形5cv2.MARKER_TRIANGLE_UP尖角向上的三角形6cv2.MARKER_TRIANGLE_DOWN尖角向下的三角形3.2添加文字與其他繪圖函數(shù)2.其他繪圖函數(shù)markerSize:點(diǎn)的大小。大于0的整數(shù),必需是整數(shù)。實(shí)際輸入<=0的數(shù)字也可,但是估計(jì)程序里有判斷,<=0等同于1。默認(rèn)值是20。thickness:點(diǎn)的線寬。必需是大于0的整數(shù),必需是整數(shù),不能小于0,默認(rèn)值是1。lineType表示線條類型,默認(rèn)值為cv2.Line_8。線條類型可設(shè)置常量如表所示。線條類型參數(shù)說(shuō)明cv2.FILLED填充cv2.LINE_44連接類型cv2.LINE_88連接類型cv2.LINE_AA抗鋸齒,該參數(shù)會(huì)讓線條更平滑3.2添加文字與其他繪圖函數(shù)2.其他繪圖函數(shù)應(yīng)用案例1:在指定畫布上繪制標(biāo)記3.3鼠標(biāo)交互操作1.鼠標(biāo)相應(yīng)事件OpenCV可在用戶觸發(fā)鼠標(biāo)事件時(shí),調(diào)用鼠標(biāo)回調(diào)函數(shù)完成事件處理。方法:首定義鼠標(biāo)回調(diào)函數(shù)使用setMouseCallback函數(shù)為圖像窗口綁定鼠標(biāo)回調(diào)函數(shù)定義鼠標(biāo)回調(diào)函數(shù):該函數(shù)中定義了當(dāng)觸發(fā)鼠標(biāo)事件時(shí),應(yīng)該完成哪些事情基本格式:defmouseCallback(event,x,y,flags,param):…參數(shù)說(shuō)明:mouseCallback為自定義函數(shù)名稱。x和y為觸發(fā)鼠標(biāo)事件時(shí),鼠標(biāo)指針在窗口中的坐標(biāo)(x,y)。3.3鼠標(biāo)交互操作1.鼠標(biāo)響應(yīng)事件event為調(diào)用時(shí)傳遞給函數(shù)的鼠標(biāo)事件對(duì)象,可能的取值為Event對(duì)應(yīng)值含義cv2.EVENT_LBUTTONDBLCLK7左鍵雙擊cv2.EVENT_LBUTTONDOWN1左鍵按下cv2.EVENT_LBUTTONUP4左鍵釋放cv2.EVENT_MBUTTONDBLCLK9中鍵雙擊cv2.EVENT_MBUTTONDOWN3中鍵按下cv2.EVENT_MBUTTONUP6中鍵釋放cv2.EVENT_MOUSEHWHEEL11橫向滾輪滾動(dòng)cv2.EVENT_MOUSEMOVE0鼠標(biāo)移動(dòng)cv2.EVENT_MOUSEWHEEL10滾輪滾動(dòng)cv2.EVENT_RBUTTONDBLCLK8右鍵雙擊cv2.EVENT_RBUTTONDOWN2右鍵按下cv2.EVENT_RBUTTONUP5右鍵釋放3.3鼠標(biāo)交互操作1.鼠標(biāo)響應(yīng)事件flags:記錄了一些專門的操作,可能的取值為:flags對(duì)應(yīng)值含義cv2.EVENT_FLAG_ALTKEY32按Alt不放cv2.EVENT_FLAG_CTRLKEY8按Ctrl不放cv2.EVENT_FLAG_LBUTTON1左鍵拖拽cv2.EVENT_FLAG_MBUTTON4中鍵拖拽cv2.EVENT_FLAG_RBUTTON2右鍵拖拽cv2.EVENT_FLAG_SHIFTKEY16按住Shift不放3.3鼠標(biāo)交互操作1.鼠標(biāo)響應(yīng)事件cv2.setMouseCallback()函數(shù)基本格式:cv2.setMouseCallback(wname,mouseCallback)參數(shù)說(shuō)明:wname:圖像窗口的名稱。mouseCallback:鼠標(biāo)回調(diào)函數(shù)名稱。3.3鼠標(biāo)交互操作1.鼠標(biāo)響應(yīng)事件應(yīng)用案例1:?jiǎn)螕羰髽?biāo)左鍵繪制十字線分析:首先編寫鼠標(biāo)事件的回調(diào)函數(shù),函數(shù)內(nèi)容為當(dāng)發(fā)生鼠標(biāo)左鍵按下事件時(shí),在窗口中繪制“十字”,顏色為紅色;使用cv2.namdWindow定義窗口;將鼠標(biāo)回調(diào)函數(shù)與窗口進(jìn)行綁定。3.3鼠標(biāo)交互操作1.鼠標(biāo)響應(yīng)事件應(yīng)用案例2:在圖像上用鼠標(biāo)點(diǎn)擊左鍵拖拽畫一矩形,并輸出矩形信息3.3鼠標(biāo)交互操作1.鼠標(biāo)響應(yīng)事件應(yīng)用案例2:在圖像上用鼠標(biāo)點(diǎn)擊左鍵拖拽畫一矩形,輸入字母m,切換模式,用鼠標(biāo)單擊左鍵拖拽畫圓形3.3鼠標(biāo)交互操作2.跟蹤欄跟蹤欄(Trackbar)是OpenCV動(dòng)態(tài)調(diào)節(jié)參數(shù)特別好用的一種工具,比如邊緣檢測(cè),閾值化,對(duì)比度和亮度調(diào)節(jié)等;在規(guī)定窗口顯示,并調(diào)節(jié)參數(shù)控制顯示圖像;依附于窗口而存在方法:使用cv2.createTrackbar()函數(shù)創(chuàng)建跟蹤欄使用getTrackbarPos()函數(shù)獲取跟蹤欄數(shù)據(jù)cv2.createTrackbar()函數(shù)使用格式:cv2.createTrackbar(trackbarname,wname,value,count,onChange,userdata)參數(shù)說(shuō)明:trackbarname:跟蹤欄的名稱3.3鼠標(biāo)交互操作2.跟蹤欄wname:圖像窗口的名稱。value:跟蹤欄中滑塊的初始位置。count:跟蹤欄的最大值,最小值為0。onChange:跟蹤欄滑塊位置變化時(shí)調(diào)用的回調(diào)函數(shù)名稱userdata為傳遞給回調(diào)函數(shù)的其他可選數(shù)據(jù)。獲取跟蹤欄的當(dāng)前值getTrackbarPos()函數(shù)基本格式:retval=cv2.getTrackbarPos(trackbarname,wname)3.3鼠標(biāo)交互操作2.跟蹤欄參數(shù)說(shuō)明:trackbarname為跟蹤欄的名稱。wname為圖像窗口的名稱。retval為返回值3.3鼠標(biāo)交互操作2.跟蹤欄應(yīng)用實(shí)例1:利用跟蹤條控制圖像的亮度和對(duì)比度3.4案例案例1:?jiǎn)螕羰髽?biāo)左鍵在圖像中繪制矩形,并標(biāo)注矩形的長(zhǎng)寬數(shù)值過(guò)程:鼠標(biāo)單擊并拖動(dòng)后繪制矩形根據(jù)繪制點(diǎn)的坐標(biāo)計(jì)算圖形的長(zhǎng)度和寬度并顯示分析:編寫繪制矩形的回調(diào)函數(shù),當(dāng)鼠標(biāo)按下時(shí),獲取鼠標(biāo)的位置坐標(biāo),當(dāng)鼠標(biāo)抬起時(shí),在畫板上繪制矩形,通過(guò)鼠標(biāo)的位置坐標(biāo)與上次所獲取的鼠標(biāo)位置坐標(biāo)相減可以得到矩形的長(zhǎng)度和寬度,利用cv2.putText函數(shù)將矩形的長(zhǎng)度和寬度顯示在畫布上注意:程序運(yùn)行后,每次繪制矩形時(shí)都是在空白的畫布上繪制的,因此,上一次繪制的矩形會(huì)消失。3.4案例案例1:?jiǎn)螕羰髽?biāo)左鍵在圖像中繪制矩形,并標(biāo)注矩形的長(zhǎng)寬數(shù)值3.4案例案例2:利用OpenCV+Python實(shí)現(xiàn)鼠標(biāo)點(diǎn)擊圖像,輸出該點(diǎn)的RGB和HSV值過(guò)程:當(dāng)按下鼠標(biāo)左鍵時(shí)會(huì)顯示圖像的BGR值和HSV值HSV是一種顏色空間,可以用一個(gè)圓錐來(lái)表示,HSV表示色相(hue)、飽和度(saturation)和亮度(value)。H表示顏色的相位角(hue),取值范圍是0到360度;S表示顏色的飽和度(saturation),范圍從0到1,它表示成所選顏色的純度和該顏色最大的純度之間的比率;V表示色彩的明亮程度(value),范圍從0到1。3.4案例案例2:利用OpenCV+Python實(shí)現(xiàn)鼠標(biāo)點(diǎn)擊圖像,輸出該點(diǎn)的RGB和HSV值分析:讀入圖像將圖像轉(zhuǎn)換成HSV顏色空間分別顯示BGR圖像和HSV圖像當(dāng)鼠標(biāo)單擊BGR圖像時(shí),顯示鼠標(biāo)點(diǎn)的BGR值,當(dāng)輸入單擊HSV圖像時(shí),顯示鼠標(biāo)點(diǎn)的HSV值需要編寫兩個(gè)顏色空間的回調(diào)函數(shù),當(dāng)單擊圖像時(shí),顯示對(duì)應(yīng)的BRG值或者HSV值3.4案例案例2:利用OpenCV+Python實(shí)現(xiàn)鼠標(biāo)點(diǎn)擊圖像,輸出該點(diǎn)的RGB和HSV值第四章圖像變換第四章圖像變換圖像變換:將原定義在圖像空間的圖像以某種形式轉(zhuǎn)換到另外的空間,利用空間的特有性質(zhì)方便地進(jìn)行一定的加工,最后再轉(zhuǎn)換回圖像空間以得到所需的效果。圖像變換算法可以分為四種:空域變換等維度算法:空域變換變維度算法值域變換等維度算法值域變換變維度算法空域變換主要指圖像在幾何上的變換,而值域變換主要指圖像在像素值上的變換等維度變換是在相同的維度空間中,而變維度變換是在不同的維度空間中,例如二維到三維,灰度空間到彩色空間4.1色彩空間變換色彩空間:自然界中常見的各種色光都可以通過(guò)將三基色(紅、綠、藍(lán))按照一定的比例混合構(gòu)成從光學(xué)角度出發(fā),可以將顏色解析為主波長(zhǎng),純度,明度等從心理學(xué)和視覺(jué)角度出發(fā),可以將顏色解析為色調(diào)、飽和度、亮度等將上述采用不同的方式表述顏色的模式稱為色彩空間,或者顏色空間、顏色模式常見的色彩空間:RGB、GRAY(灰度圖像)、YCrCb、HSV、HLS、HIS、CMY、YUV等色彩空間轉(zhuǎn)換:將圖像從一個(gè)色彩空間轉(zhuǎn)換到另一個(gè)色彩空間,每種色彩空間都其擅長(zhǎng)的解決問(wèn)題的領(lǐng)域,因此在解決色彩問(wèn)題時(shí),需要進(jìn)行色彩空間的轉(zhuǎn)換。4.1色彩空間變換常用的色彩空間:RGB:最常用的是面向硬件的顏色空間,該空間經(jīng)常用于屏幕顯示和視頻輸出HSI(色調(diào)、飽和度、強(qiáng)度):是一種更符合人描述和解釋顏色的一種模型HSV(色調(diào)、飽和度、亮度):不適合顯示器系統(tǒng),但是更符合人眼的視覺(jué)特性Lab(亮度、顏色通道a、b):彌補(bǔ)了RGB和CMYK兩種色彩模式的不足,是一種設(shè)備無(wú)關(guān)的顏色模型,也是一種基于生理特征的顏色模型CMY(青、洋紅、黃)和CMYK(青、洋紅、黃、黑):是針對(duì)彩色打印機(jī)的GRAY:通常指的是灰度圖像,具有256個(gè)灰度級(jí),像素值的范圍是0~255YUV:Y”表示明亮度,也就是灰階值,“U”和“V”表示的則是色度,作用是描述影像色彩及飽和度,用于指定像素的顏色,用于優(yōu)化彩色視頻信號(hào)的傳輸YCrCb:由YUV彩色空間派生的一種顏色空間,主要用于數(shù)字電視系統(tǒng),Y代表光源的亮度,色度信息保存在Cr和Cb中,Cr表示紅色分量信息,Cb表示藍(lán)色分量信息4.1色彩空間變換1.RGB色彩空間RGB色彩空間使用R(Red,紅)、G(Green,綠)和B(Blue,藍(lán))3種基本顏色表示圖像像素。RGB色彩空間中,圖像的每個(gè)像素用一個(gè)三元組表示,三元組中的3個(gè)值依次表示紅色、綠色和藍(lán)色,依次對(duì)應(yīng)R、G和B通道。顏色樣式RGB數(shù)值顏色代碼白色255,255,255#FFFFFF黑色0,0,0#000000紅色255,0,0#FF0000黃色255,255,0#FFFF00綠色0,255,0#00FF00藍(lán)色0,0,255#0000FF紫色(深紅)255.0.255#FF00FF青色0,255,255#00FFFF橘黃255,128,0#FF80004.1色彩空間變換1.RGB色彩空間OpenCV默認(rèn)采用BGR色彩空間,它按B、G和R通道順序表示圖像。在cv2.cvtColor()函數(shù)中使用參數(shù)cv2.COLOR_BGR2RGB轉(zhuǎn)換碼可將圖像從BGR色彩空間轉(zhuǎn)換為RGB色彩空間4.1色彩空間變換2.GRAY色彩空間GRAY色彩空間通常指8位灰度圖像,其顏色取值范圍為[0,255],共256個(gè)灰度級(jí),"255"表示純白色,數(shù)值“0”表示純黑色。8位灰度表示每個(gè)像素采用8位來(lái)保存,如果使用16位來(lái)保存,則共有65536個(gè)灰度級(jí)彩色圖像轉(zhuǎn)為灰度圖像的幾種方法: 浮點(diǎn)算法:Gray=R×0.3+G×0.59+B×0.11 整數(shù)方法:Gray=(R×30+G×59+B×11)/100 移位方法:Gray=(R×28+G×151+B×77)?8 平均值法:Gray=(R+G+B)/3 僅取綠色:Gray=G4.1色彩空間變換2.GRAY色彩空間OpenCV中使用cv2.cvtColor()函數(shù)可將BGR色彩空間轉(zhuǎn)換位GRAY4.1色彩空間變換3.YCrCb色彩空間YCrCb色彩系統(tǒng)是從YUV色彩系統(tǒng)衍生出來(lái)的,是一種基于人眼感知的顏色空間,被廣泛的應(yīng)用在電視的色彩顯示等領(lǐng)域中。Y表示明亮度(Luminance或Luma),Cr表示顏色的色調(diào),Cb表示飽和度。YCrCb與RGB可以相互轉(zhuǎn)換(RGB取值范圍均為0255),轉(zhuǎn)換公式為:4.1色彩空間變換3.YCrCb色彩空間在cv2.cvtColor()函數(shù)中使用參數(shù)cv2.COLOR_BGR2YCrCb轉(zhuǎn)換碼可將圖像從BGR色彩空間轉(zhuǎn)換為YCrCb色彩空間,示例代碼如下:4.1色彩空間變換4.HSV色彩空間RGB是從硬件的角度提出的顏色模型,在與人眼匹配的過(guò)程中可能存在一定的差異,HSV色彩空間是一種面向視覺(jué)感知的顏色模型。HSV指出人眼的色彩知覺(jué)主要包括三要素:色調(diào)(Hue,也稱為色相)、飽和度(Saturation)、亮度(Value)。色調(diào):光的顏色,與光的波長(zhǎng)有關(guān),不同波長(zhǎng)的光表現(xiàn)為不同的顏色飽和度:是指色彩的深淺程度,指相對(duì)純凈度,或一種顏色混合白光的數(shù)量,飽和度與所加白光的數(shù)量成反比。亮度:指人眼感受的光的明暗程度,與物體的反射度有關(guān)。如果在其中摻入的白色越多,其亮度越高,如果在其中摻入的黑色越多,則其亮度越低。色調(diào)的取值范圍[0,360]。飽和度的取值范圍[0,1]亮度的取值范圍[0,1]4.1色彩空間變換4.HSV色彩空間從RGB色彩空間轉(zhuǎn)換到HSV色彩空間公式如下:4.1色彩空間變換4.HSV色彩空間在cv2.cvtColor()函數(shù)中使用cv2.COLOR_BGR2HSV轉(zhuǎn)換碼可將圖像從BGR色彩空間轉(zhuǎn)換為HSV色彩空間,實(shí)力代碼如下:4.1色彩空間變換5.cv2.cvtColor函數(shù)cvtColor函數(shù)是OpenCV里用于圖像顏色空間轉(zhuǎn)換,可以實(shí)現(xiàn)RGB顏色、HSV顏色、HSI顏色、lab顏色、YUV顏色等轉(zhuǎn)換,也可以彩色和灰度圖互轉(zhuǎn)。幾種色彩空間之間的相互轉(zhuǎn)換的轉(zhuǎn)換代碼如表所示:轉(zhuǎn)換關(guān)系值BGR色彩空間與YCrCb色彩空間之間的轉(zhuǎn)換COLOR_BGR2YCrCbCOLOR_RGB2YCrCbCOLOR_YCrCb2BGRCOLOR_YCrCb2RGBBGR色彩空間與GRAY色彩空間之間的轉(zhuǎn)換COLOR_BGR2GRAYCOLOR_RGB2GRAYCOLOR_GRAY2RGBCOLOR_GRAY2BGRBGR色彩空間與YUV色彩空間之間的轉(zhuǎn)換COLOR_BGR2YUVCOLOR_RGB2YUVCOLOR_YUV2RGBCOLOR_YUV2BGR4.1色彩空間變換應(yīng)用實(shí)例1:cvtColor()函數(shù)實(shí)現(xiàn)圖像色彩空間的轉(zhuǎn)換4.1色彩空間變換應(yīng)用實(shí)例2:識(shí)別攝像頭中提取某種顏色的物體(例如:識(shí)別藍(lán)色的物體)4.2幾何變換幾何變換:在不改變圖像內(nèi)容的前提下對(duì)圖像像素的進(jìn)行空間幾何變換,也被稱為坐標(biāo)變換;幾何變換改變了圖像中像素間的空間關(guān)系,即像素的空間位置關(guān)系,比如可以放大和縮小圖像;幾何變換建立了一種原圖像像素與變換后圖像像素之間的映射關(guān)系,通過(guò)這種映射關(guān)系能夠?qū)崿F(xiàn)原圖像任意像素計(jì)算該像素在變換后圖像的坐標(biāo)位置;應(yīng)用場(chǎng)景:在深度學(xué)習(xí)領(lǐng)域常用平移、旋轉(zhuǎn)、鏡像等操作進(jìn)行數(shù)據(jù)增廣在傳統(tǒng)CV領(lǐng)域,由于某些拍攝角度的問(wèn)題,需要對(duì)圖像進(jìn)行矯正處理幾何變換主要包括:平移變換(Translation),縮放變換(Scaling),旋轉(zhuǎn)變換(Rotation),仿射變換(Affine),投影變換(Projective)4.2幾何變換1、縮放縮放是將圖像的尺寸變小或變大的過(guò)程,即減少或增加原圖像數(shù)據(jù)的像素個(gè)數(shù),或者說(shuō)通過(guò)增加或刪除像素點(diǎn)來(lái)改變圖像的尺寸;256x256的Lena圖放大到512x5124.2幾何變換1、縮放基本原理:將分辨率(圖片尺寸)為(w,h)的圖像,縮放后其圖像分辨率(圖像尺寸)為(w’,h’),則水平方向的縮放系數(shù)為Sx=w’/w,垂直方向的縮放系數(shù)為Sy=h’/h,設(shè)原始圖像的某個(gè)像素點(diǎn)坐標(biāo)為(x0,y0),縮放后的圖像的像素點(diǎn)坐標(biāo)為(x,y),則(x0,y0)和(x,y)的關(guān)系如下:圖像縮放算法:最近鄰插值算法、雙線性插值算法、立方插值算法、像素關(guān)系重采樣算法4.2幾何變換1、縮放最近鄰算法:計(jì)算縮放后圖像的像素對(duì)應(yīng)原圖像中的哪個(gè)坐標(biāo)點(diǎn)的像素來(lái)填充,但計(jì)算結(jié)果有可能不是整數(shù),需要將其轉(zhuǎn)換為整數(shù),不同的插值法計(jì)算方法不同,當(dāng)采取四舍五入算法時(shí),就是最近鄰算法。設(shè)(x0,y0)為源圖像素點(diǎn)的坐標(biāo),(x,y)為縮放后圖像像素點(diǎn)坐標(biāo),有公式:則(x,y)坐標(biāo)的像素值為源圖(x0,y0)的坐標(biāo)的像素值,即將源圖中(x0,y0)的坐標(biāo)的像素值拷貝到縮放后圖像(x,y)坐標(biāo)位置舉例:4.2幾何變換1、縮放最近鄰算法:優(yōu)點(diǎn):最常見,最通用的算法之一,計(jì)算量小,算法簡(jiǎn)單,運(yùn)算速度快缺點(diǎn):容易導(dǎo)致像素的變化不連續(xù),放大圖像時(shí),會(huì)出現(xiàn)嚴(yán)重的馬賽克現(xiàn)象,縮小圖像時(shí)會(huì)嚴(yán)重失真Bilinear算法:也稱為雙線性插值算法,使用與點(diǎn)(x,y)最近鄰的四個(gè)像素進(jìn)行插值運(yùn)算,設(shè)與(x,y)臨近的四個(gè)像素點(diǎn)坐標(biāo)為(i,j),(i+1,j),(i,j+1),(i+1,j+1),又令u=x-i,v=y-j,則點(diǎn)(x,y)的灰度值為:4.2幾何變換1、縮放Bilinear算法:該算法的實(shí)質(zhì)就是將原來(lái)的采樣點(diǎn)(浮點(diǎn)數(shù),即計(jì)算出的坐標(biāo)值)的附近點(diǎn)的四個(gè)像素值乘以權(quán)重得到新圖像的像素信息。優(yōu)點(diǎn):最常見,最通用的算法之一,效果比最近鄰插值法好。計(jì)算量較小,運(yùn)算速度較快。圖像連續(xù)性較好。與最近鄰算法相比,效果要好于最近鄰插值,只是計(jì)算量稍大一些,算法復(fù)雜些,程序運(yùn)行時(shí)間也稍長(zhǎng)些,但縮放后圖像質(zhì)量高,基本克服了最近鄰插值灰度值不連續(xù)的特點(diǎn)缺點(diǎn):放大時(shí)圖像較為模糊,細(xì)節(jié)損失較嚴(yán)重,圖像邊緣在一定程度上變得較為模糊4.2幾何變換1、縮放OpenCV實(shí)現(xiàn)圖像縮放:方法:使用cv2.resize()函數(shù)實(shí)現(xiàn)圖像的放大和縮小,基本語(yǔ)法格式如下:dst=cv2.resize(src,dsize[,fx[,fy[,interpolation]]]])參數(shù)說(shuō)明:dst表示轉(zhuǎn)換后的圖像。src表示用于縮放的原圖像。dsize表示轉(zhuǎn)換后的圖像大小。fx表示水平方向的縮放比例。fy表示垂直方向的縮放比例。interpolation表示插值方式4.2幾何變換1、縮放OpenCV實(shí)現(xiàn)圖像縮放:方法:使用cv2.resize()函數(shù)實(shí)現(xiàn)圖像的放大和縮小,基本語(yǔ)法格式如下:dst=cv2.resize(src,dsize[,fx[,fy[,interpolation]]]])參數(shù)說(shuō)明:interpolation表示插值方式,該參數(shù)值以下5種,在縮小時(shí)推薦使用cv2.INTER_AREA,擴(kuò)大時(shí)推薦使用cv2.INTER_CUBIC和cv2.INTER_LINEARinterpolation選項(xiàng)插值方式cv2.INTER_NEAREST最近鄰插值cv2.INTER_LINEAR雙線性插值(默認(rèn))cv2.INTER_AREA使用像素區(qū)域關(guān)系進(jìn)行重采樣。cv2.I
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- AI輔助下的大學(xué)英語(yǔ)寫作教學(xué)的探索-基于輸入輸出理論
- 多模態(tài)核素治療
- 基于大數(shù)據(jù)的故障分析
- 沖調(diào)產(chǎn)品知識(shí)課件
- 2025年職業(yè)道德與衛(wèi)生法律法規(guī)高頻考題及答案(共280題)
- 福建生物二模試卷及答案
- 單招語(yǔ)文大綱試卷及答案
- 綠化改造合同范本
- 遼寧高考全科試卷及答案
- 2025年八省聯(lián)考湖南試卷及答案
- 醫(yī)學(xué)一等獎(jiǎng)《白血病》課件
- JCT587-2012 玻璃纖維纏繞增強(qiáng)熱固性樹脂耐腐蝕立式貯罐
- 金屬制品廠電泳生產(chǎn)線安全風(fēng)險(xiǎn)分級(jí)清單
- 醫(yī)療器械臨床評(píng)價(jià)報(bào)告模板
- 污染場(chǎng)地調(diào)查評(píng)價(jià)與修復(fù)
- 生物計(jì)算機(jī)課件
- 浙江省優(yōu)秀安裝質(zhì)量獎(jiǎng)創(chuàng)優(yōu)計(jì)劃申報(bào)表實(shí)例
- 新時(shí)代背景下企業(yè)人力資源管理的數(shù)字化轉(zhuǎn)型探研共3篇
- 奧的斯電梯toec-40調(diào)試方法
- 化工原理(下)第4章液液萃取
- 重點(diǎn)監(jiān)管的危險(xiǎn)化學(xué)品名錄(完整版)
評(píng)論
0/150
提交評(píng)論