計(jì)算機(jī)視覺(jué)技術(shù) 課件全套 第1-5章 計(jì)算機(jī)視覺(jué)概述-圖像噪聲_第1頁(yè)
計(jì)算機(jī)視覺(jué)技術(shù) 課件全套 第1-5章 計(jì)算機(jī)視覺(jué)概述-圖像噪聲_第2頁(yè)
計(jì)算機(jī)視覺(jué)技術(shù) 課件全套 第1-5章 計(jì)算機(jī)視覺(jué)概述-圖像噪聲_第3頁(yè)
計(jì)算機(jī)視覺(jué)技術(shù) 課件全套 第1-5章 計(jì)算機(jī)視覺(jué)概述-圖像噪聲_第4頁(yè)
計(jì)算機(jī)視覺(jué)技術(shù) 課件全套 第1-5章 計(jì)算機(jī)視覺(jué)概述-圖像噪聲_第5頁(yè)
已閱讀5頁(yè),還剩344頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第1章計(jì)算機(jī)視覺(jué)概述前言長(zhǎng)久以來(lái),人類(lèi)都在研究如何使機(jī)器能夠“看見(jiàn)”,即具圖像處理、圖像構(gòu)建、圖像理解等能力。通過(guò)對(duì)人類(lèi)視覺(jué)系統(tǒng)的研究,科學(xué)家在很早以前就發(fā)現(xiàn)了眼睛“看見(jiàn)”的原理,隨后照相機(jī)、攝像機(jī)、具有目標(biāo)識(shí)別能力的機(jī)器人、能夠理解圖像含義的搜索器等視覺(jué)系統(tǒng)陸續(xù)出現(xiàn)在了人們的生活中。那么,人類(lèi)視覺(jué)到底有哪些奧秘呢?到底什么是計(jì)算機(jī)視覺(jué)呢?機(jī)器是如何處理圖像的?這一系列問(wèn)題將在本章得到回答。任務(wù)總結(jié)了解圖像處理庫(kù)學(xué)習(xí)什么是圖像處理學(xué)習(xí)什么是計(jì)算機(jī)視覺(jué)學(xué)習(xí)什么是計(jì)算機(jī)視覺(jué)What

is

computer

vision1.1人類(lèi)視覺(jué)1.3計(jì)算機(jī)視覺(jué)的應(yīng)用1.2計(jì)算機(jī)視覺(jué)011.1

起源:人類(lèi)視覺(jué)

人類(lèi)視覺(jué)原理人類(lèi)視覺(jué)特性人類(lèi)視覺(jué)原理主要由視覺(jué)器官和大腦視覺(jué)皮層組成視覺(jué)器官指的的是“眼睛”主要由角膜、虹膜、晶狀體、視網(wǎng)膜組成

。原理光線進(jìn)入人眼,穿過(guò)晶狀體后在視網(wǎng)膜上成像,分布于視網(wǎng)膜上的視覺(jué)細(xì)胞將光轉(zhuǎn)換成電脈沖,傳遞給大腦視覺(jué)皮層進(jìn)行解碼產(chǎn)生圖像人類(lèi)視覺(jué)特性視覺(jué)關(guān)注機(jī)制注意力機(jī)制色彩敏感度RGB轉(zhuǎn)灰度圖亮度及對(duì)比敏感度邊緣檢測(cè)視覺(jué)掩蓋視覺(jué)內(nèi)在推導(dǎo)機(jī)制1)視覺(jué)關(guān)注機(jī)制定義:在紛繁復(fù)雜的外界場(chǎng)景中,人類(lèi)視覺(jué)總能快速定位自己感興趣的目標(biāo),而忽略不重要的區(qū)域。模式:自底向上模式和自頂向下模式自底向上模式是由圖像客觀內(nèi)容驅(qū)動(dòng),主要跟圖像內(nèi)容的顯著性相關(guān)。自頂向下模式則主要由主觀命令指導(dǎo),受到人類(lèi)意識(shí)支配,在人類(lèi)意識(shí)指令下強(qiáng)行轉(zhuǎn)移注意力到某一特定區(qū)域。在計(jì)算機(jī)視覺(jué)領(lǐng)域,基于人類(lèi)視覺(jué)關(guān)注機(jī)制提出的注意力機(jī)制是解決信息超載問(wèn)題的主要手段。自家的假裝沒(méi)看見(jiàn)這幅圖里有只小貓咪,找找看?2)色彩敏感度人類(lèi)視覺(jué)系統(tǒng)并不是對(duì)每種顏色都同樣敏感。視網(wǎng)膜上有一類(lèi)錐狀細(xì)胞,它們對(duì)紅光,綠光和藍(lán)光的敏感度不盡相同,同時(shí),這些細(xì)胞的占比也不均勻。這一特性影響到RGB彩色圖轉(zhuǎn)灰度圖的權(quán)重設(shè)置,為紅色通道0.299、綠色通道0.587、藍(lán)色通道0.114。3)亮度和對(duì)比度度敏感機(jī)制人眼對(duì)光強(qiáng)度具有某種自適應(yīng)的調(diào)節(jié)功能,即能通過(guò)調(diào)節(jié)感光靈敏度來(lái)適應(yīng)范圍很廣的亮度,同時(shí)這也導(dǎo)致了人眼對(duì)絕對(duì)亮度的判斷能力較差。如圖中所示,中間同等亮度的方塊在黑暗的背景上會(huì)顯得更亮,反之,會(huì)顯得更暗。同理,相較于小幅度亮度變化,人眼對(duì)大跨度的亮度變化,比如物體邊緣區(qū)域,更敏感。邊緣信息在計(jì)算機(jī)視覺(jué)領(lǐng)域得到了廣泛應(yīng)用,如通過(guò)對(duì)邊緣特征的檢測(cè),識(shí)別目標(biāo)的類(lèi)別、獲取目標(biāo)的位置,跟蹤目標(biāo)的移動(dòng)路徑等。4)視覺(jué)掩蓋效應(yīng)類(lèi)別:對(duì)比度掩蓋起因:視覺(jué)信息間的相互作用或相互干擾將引起現(xiàn)象舉例:亮度和顏色如何影響到你的視覺(jué)?請(qǐng)問(wèn):這兩條螺旋帶是同一種顏色嗎?4)視覺(jué)掩蓋效應(yīng)類(lèi)別:紋理掩蓋起因:人眼能夠毫無(wú)察覺(jué)地過(guò)濾掉一定閾值以下的信息,對(duì)像素層絕對(duì)差值大的關(guān)注度更高。特點(diǎn):這一特性在實(shí)際圖像處理中幫助我們區(qū)分出哪些信號(hào)是視覺(jué)系統(tǒng)能察覺(jué)、感興趣的,哪些信號(hào)是視覺(jué)系統(tǒng)無(wú)法察覺(jué)、可忽略的。選擇性地處理人眼能夠察覺(jué)的信息可以大大減少圖像處理的復(fù)雜度,且在一定條件下改善圖像的顯示質(zhì)量。案例:圖像編碼壓縮過(guò)程,

pdf文件壓縮(利用人類(lèi)視覺(jué)系統(tǒng)對(duì)高頻的不敏感特性,舍棄部分高頻信息)不斷添加頻率個(gè)數(shù),圖像恢復(fù)情況4)視覺(jué)掩蓋效應(yīng)類(lèi)別:運(yùn)動(dòng)掩蓋起因:人眼容易首先關(guān)注視頻中運(yùn)動(dòng)速度中等或快的圖像內(nèi)容,而易忽略運(yùn)動(dòng)速度慢或靜止的圖像內(nèi)容。特點(diǎn):受運(yùn)動(dòng)掩蓋效應(yīng)的影響,人眼很難觀察到圖像內(nèi)容的細(xì)節(jié)信息,因此其對(duì)應(yīng)的感知敏感程度會(huì)顯著降低。而運(yùn)動(dòng)速度中等的圖像內(nèi)容不僅易吸引人眼關(guān)注,并且運(yùn)動(dòng)掩蓋效應(yīng)的作用微弱,所以其對(duì)應(yīng)的感知敏感程度最高。案例:視頻壓縮-減少時(shí)間冗余5)視覺(jué)內(nèi)在推導(dǎo)機(jī)制根據(jù)大腦中的記憶信息,來(lái)推導(dǎo)、預(yù)測(cè)輸入的視覺(jué)內(nèi)容,同時(shí)選擇性地丟掉那些無(wú)法理解的不確定的信息。如圖中所示,這兩佛圖都是具有歧義的圖片,當(dāng)我們根據(jù)經(jīng)驗(yàn)判斷其為其中一種對(duì)象,如判斷為杯子,那么我們就會(huì)有意識(shí)的丟掉與杯子無(wú)關(guān)的信息。這種推導(dǎo)機(jī)制由視覺(jué)大腦皮層來(lái)處理,對(duì)應(yīng)到計(jì)算機(jī)視覺(jué)系統(tǒng)中,則由主機(jī)進(jìn)行處理。這種判斷和推導(dǎo)的能力衍生出了計(jì)算機(jī)視覺(jué)應(yīng)用中的各種任務(wù),如圖像識(shí)別,圖像生成,目標(biāo)檢測(cè),目標(biāo)跟蹤等。圖像識(shí)別圖像生成目標(biāo)跟蹤目標(biāo)檢測(cè)杯子or人臉?回憶回憶問(wèn)題一:彩色圖轉(zhuǎn)灰度圖,紅色通道、綠色通道和藍(lán)色通道的權(quán)重一樣嗎?為什么?

問(wèn)題二:人工智能領(lǐng)域的注意力機(jī)制是參考了人眼系統(tǒng)的哪種特性?第1章計(jì)算機(jī)視覺(jué)概述復(fù)習(xí)5分鐘分享1.2計(jì)算機(jī)視覺(jué)

計(jì)算機(jī)視覺(jué)定義計(jì)算機(jī)視覺(jué)的任務(wù)計(jì)算機(jī)視覺(jué)應(yīng)用計(jì)算機(jī)視覺(jué)的定義計(jì)算機(jī)視覺(jué)是一門(mén)研究如何使機(jī)器“看”的科學(xué),其目標(biāo)是在機(jī)器上復(fù)現(xiàn)人類(lèi)視覺(jué)。更具體的說(shuō),就是指用攝影機(jī)和電腦代替人眼對(duì)目標(biāo)進(jìn)行識(shí)別、跟蹤和測(cè)量等視覺(jué)任務(wù)。計(jì)算機(jī)視覺(jué)的輸入是圖像,輸出是場(chǎng)景知識(shí),如圖像中的物體類(lèi)別、物體數(shù)量、物體運(yùn)動(dòng)等。由于語(yǔ)義鴻溝的原因,要實(shí)現(xiàn)“看”的能力似乎沒(méi)有那么容易。計(jì)算機(jī)視覺(jué):試圖在機(jī)器上復(fù)現(xiàn)人類(lèi)視覺(jué),但由于語(yǔ)義鴻溝的原因,似乎沒(méi)有那么容易。語(yǔ)義鴻溝:指通常人們?cè)谂袆e圖像的相似性時(shí)并非建立在圖像低層視覺(jué)特征的相似上,而是建立在對(duì)圖像所描述的對(duì)象或事件的語(yǔ)義理解的基礎(chǔ)上。語(yǔ)義鴻溝這兩幅圖一樣嗎?這是什么動(dòng)物?人類(lèi):完全不同,計(jì)算機(jī):很相似人類(lèi):是貓,計(jì)算機(jī):是梅花鹿

從任務(wù)內(nèi)容上劃分,計(jì)算機(jī)視覺(jué)的基本任務(wù)可分為:分類(lèi),定位,檢測(cè)和分割計(jì)算機(jī)視覺(jué)任務(wù)分割(segment):在檢測(cè)的基礎(chǔ)上進(jìn)一步判斷圖像中哪些像素屬于哪個(gè)目標(biāo)。分類(lèi)(classification):判斷一張圖像所屬類(lèi)別。定位(localization):判斷目標(biāo)在圖像的位置,通常是以包圍盒的(boundingbox)形式呈現(xiàn)。檢測(cè)(detection):判斷圖像中出現(xiàn)的可檢測(cè)目標(biāo)的種類(lèi)和數(shù)目,并框出每個(gè)目標(biāo)的包圍盒。計(jì)算機(jī)視覺(jué)基本任務(wù)圖像理解圖像跟蹤圖像識(shí)別根據(jù)場(chǎng)景知識(shí)的不同,計(jì)算機(jī)視覺(jué)可以劃分為圖像識(shí)別、圖像跟蹤和圖像理解。計(jì)算機(jī)視覺(jué)任務(wù)(1)圖像識(shí)別一種利用計(jì)算機(jī)識(shí)別圖像中各種不同模式的目標(biāo)和對(duì)象的技術(shù),在機(jī)器學(xué)習(xí)領(lǐng)域,主要指對(duì)于一個(gè)給定的圖像,預(yù)測(cè)它屬于的哪個(gè)分類(lèi)標(biāo)簽。粗粒度圖像識(shí)別和細(xì)粒度圖像識(shí)別主要任務(wù)為圖像分類(lèi),應(yīng)用:搜索引擎、智能相冊(cè)等

圖像識(shí)別的影響因素:姿態(tài)、視角、光照、遮擋、背景干擾等

圖像識(shí)別結(jié)論:計(jì)算機(jī)視覺(jué)較于人類(lèi)視覺(jué)還有一段不小的距離。計(jì)算機(jī)視覺(jué)任務(wù)(2)圖像跟蹤通過(guò)圖像識(shí)別、紅外、超聲波等方式對(duì)攝像頭中拍攝到的物體進(jìn)行定位和追蹤。在計(jì)算機(jī)視覺(jué)層面,圖像跟蹤可以細(xì)分為目標(biāo)檢測(cè)和目標(biāo)跟蹤遮擋、形變、背景斑雜、尺度變化等,會(huì)影響到跟蹤效果應(yīng)用:無(wú)人機(jī)跟蹤,體育賽事跟蹤計(jì)算機(jī)視覺(jué)任務(wù)(3)圖像理解圖像理解主要指對(duì)圖像語(yǔ)義的理解,是在簡(jiǎn)單識(shí)別基礎(chǔ)上進(jìn)一步提取深層含義的技術(shù)。對(duì)于同一張圖片,圖像識(shí)別能識(shí)別出屬于分類(lèi)集合內(nèi)的目標(biāo),而圖像理解能識(shí)別出更多的信息,比如圖像中有什么目標(biāo)、目標(biāo)之間有什么關(guān)系、圖像處于什么場(chǎng)景以及如何應(yīng)用場(chǎng)景等。提取圖像到深層含義應(yīng)用:實(shí)例分割,圖像描述,視頻描述,唇語(yǔ)解讀,圖像生成等。計(jì)算機(jī)視覺(jué)應(yīng)用工業(yè)醫(yī)療交通應(yīng)用電商支付說(shuō)一說(shuō):在聊天室分享讓你眼前一亮的計(jì)算機(jī)視覺(jué)應(yīng)用案例?

第1章計(jì)算機(jī)視覺(jué)概述2.1圖像的表示(1)二值圖像(2)灰度圖像(3)彩度圖像計(jì)算機(jī)視覺(jué)處理的圖像經(jīng)過(guò)數(shù)字?jǐn)z像機(jī)、掃描儀等設(shè)備的采樣后,需要以某種數(shù)字化方式進(jìn)行表示才能進(jìn)行后續(xù)的處理。那么圖像在計(jì)算機(jī)中是如何表示的呢?圖像表示

圖像表示二值圖像是指像素值只有0和1的圖像表示方法,使用1個(gè)比特位即可表示。占用更少的存儲(chǔ)空間,獲得更高效的處理速度。二值圖可以很方便的進(jìn)行邏輯運(yùn)算,常用于標(biāo)識(shí)圖像區(qū)域,與圖像做點(diǎn)乘運(yùn)算,能夠快速分割出目標(biāo)區(qū)域。1)二值圖像0001000010000011111111000011111111000011011011000011111111000011110111000011101011000001111110000000011100000000001000000011111111100000111110002)灰度圖像

灰度圖,又稱(chēng)灰階圖,是用灰度表示的圖形?;叶仁且环N像素強(qiáng)度分級(jí)機(jī)制,將白色與黑色之間按對(duì)數(shù)關(guān)系分為多個(gè)等級(jí),通常使用8位表示,取值范圍為0~256灰度圖像與二值圖像不同,二值圖像的每個(gè)像素使用1個(gè)比特位表示,灰度圖像使用8個(gè)比特位表示;二值圖像只有黑色與白色兩種顏色,灰度圖像在黑色與白色之間還有許多不同等級(jí)的中間色。0-2558位整數(shù)3)彩色圖像

彩色圖像通常由多個(gè)疊加的彩色通道組成,每個(gè)通道代表給定顏色分量的強(qiáng)度值。典型的3通道彩色圖像由紅色、綠色、藍(lán)色疊加而成,3通道彩色圖像分解示意圖如圖1.5所示。圖中左邊是一張自然染色的圖像,右邊分別顯示的是紅色、綠色和藍(lán)色3個(gè)顏色分量的通道。思考?右邊的圖是什么類(lèi)型的圖片?A二值圖B單通道灰度圖C多通道彩色圖第1章計(jì)算機(jī)視覺(jué)概述2.2

色彩模型色彩模型是描述如何使用1組值表示顏色的方法的抽象數(shù)學(xué)模型。目前經(jīng)常用到的色彩模型有RGB、HSV、CMYK、Lab等。而OpenCV支持的多通道色彩模型主要有RGB、HSV等。1)基于發(fā)光屏幕的RGB

OpenCV中BGR圖像數(shù)據(jù)表示

2)基于直觀感受的HSVHSV像素點(diǎn)同樣由3個(gè)分量表示,H(Hue)分量表示色相,S(Saturation)分量表示飽和度,V(Value)分量表示明度H分量用角度度量,取值范圍為0~360,表示光譜上的顏色值S分量表示顏色的飽和程度,取值范圍為0~100V分量表示明亮程度,取值范圍同樣為0~100,V值越高,表示顏色明亮度越高如果要表示黃色,在HSV空間中,只需要將H分量設(shè)置為60即可相比RGB,HSV顏色空間更容易實(shí)現(xiàn)對(duì)顏色的跟蹤,在圖像處理領(lǐng)域常用于分割指定顏色的物體。3)用于打印的CMYK

利用色料的三原色混色原理,加上黑色油墨,共計(jì)四種顏色混合疊加,形成所謂“全彩印刷”四種標(biāo)準(zhǔn)顏色是:C=青色,M=品紅色,Y=黃色,K=黑色。CMYK色彩空間專(zhuān)用于印刷領(lǐng)域,通常在印刷品上看到的圖像都是CMYK模式,比如期刊、雜志、報(bào)紙、宣傳畫(huà)等,而在屏幕上顯示的圖像都是RGB模式。4)基于生理的LAB

思考?電腦屏幕上的畫(huà)面是哪種色彩模式?A

CMYKB

RGBC

HSVD

LAB紙質(zhì)教材上的圖文是哪種色彩模式?A

CMYKB

RGBC

HSVD

LAB第1章計(jì)算機(jī)視覺(jué)概述2.3圖像處理的基本過(guò)程

計(jì)算機(jī)視覺(jué)系統(tǒng)的圖像處理過(guò)程一般包括圖像獲取、圖像預(yù)處理、特征提取、高級(jí)處理等基本過(guò)程數(shù)字圖像的獲取主要通過(guò)圖像感知設(shè)備,如各種光敏攝像機(jī)、雷達(dá)、超聲波接收器等

必要的預(yù)處理操作被采用以使圖像滿足后繼分析的要求。常用的預(yù)處理操作有圖像去噪、圖像增強(qiáng)、圖像轉(zhuǎn)換、二次取樣等

特征提取指從圖像中提取對(duì)后繼分析有用的圖像特征。簡(jiǎn)單的特征提取操作有邊緣提取、邊角檢測(cè)、斑點(diǎn)檢測(cè)等,相對(duì)復(fù)雜的特征可能與圖像中的紋理形狀或運(yùn)動(dòng)狀態(tài)有關(guān),有時(shí)還需要進(jìn)行圖像分割,從一或多幅圖片中分割出含有特定目標(biāo)的區(qū)域高階處理部分,主要任務(wù)是理解圖像的含義

。高級(jí)處理的內(nèi)容包括但不限于:驗(yàn)證得到的數(shù)據(jù)是否符合前提要求、估測(cè)特定系數(shù)(如目標(biāo)的姿態(tài)和體積)、對(duì)目標(biāo)進(jìn)行分類(lèi)等。圖像獲取-圖像采集圖像感知設(shè)備,如各種光敏攝像機(jī)、雷達(dá)、超聲波接收器等。使用的感知器不同,采集的圖像也會(huì)有區(qū)別。46普通相機(jī)、攝像機(jī)彩色圖像,像素點(diǎn)對(duì)應(yīng)的是光在不同光譜段上的疊加強(qiáng)度事件攝像機(jī)由像素位置、時(shí)間和極值組成的事件對(duì)象數(shù)列雷達(dá)灰度圖像,像素點(diǎn)對(duì)應(yīng)的是無(wú)線電波的電平超聲儀灰度圖像,像素值為超聲波的回波信號(hào)差圖像獲取-圖像表示采集設(shè)備能夠返回?cái)?shù)字圖像,是因?yàn)橹虚g經(jīng)歷了圖像數(shù)字化過(guò)程47

灰度離散化:將連續(xù)變化的像素取值轉(zhuǎn)化成有限個(gè)離散值,賦予像素點(diǎn)以灰度劃分的亮度值。通常為8位或16位整數(shù)。壓縮編碼:一般的壓縮方式有預(yù)測(cè)編碼、變換編碼、分形編碼、小波變換圖像壓縮編碼等。常見(jiàn)壓縮格式有JPEG、PNG等。Cat.jpgdog.png2.bmp圖像采集圖像量化壓縮編碼圖像文件直接從圖像感知設(shè)備獲取的圖像可能存在噪聲、暗區(qū)、倒置、尺寸不統(tǒng)一、數(shù)量不足等問(wèn)題,無(wú)法直接用于分析任務(wù),需要進(jìn)行預(yù)處理操作。預(yù)處理類(lèi)別描述圖像轉(zhuǎn)換轉(zhuǎn)換為灰度圖或二值圖像,圖像歸一化處理,圖像標(biāo)準(zhǔn)化處理等。圖像增廣通過(guò)對(duì)訓(xùn)練圖像做一系列隨機(jī)改變,來(lái)產(chǎn)生相似但又不同的訓(xùn)練樣本,從而擴(kuò)大訓(xùn)練數(shù)據(jù)集的規(guī)模。處理內(nèi)容包括翻轉(zhuǎn)、裁剪、過(guò)濾、銳化、模糊、旋轉(zhuǎn)、平移、剪切、縮放、色彩、亮度、對(duì)比、均勻、加噪、漸變、變形等。圖像預(yù)處理思考?5.圖像采集是圖像的空間離散化過(guò)程,而圖像量化是灰度離散化過(guò)程。A對(duì)B錯(cuò)第1章計(jì)算機(jī)視覺(jué)概述復(fù)習(xí)5.圖像采集是圖像的空間離散化過(guò)程,而圖像量化是灰度離散化過(guò)程。A對(duì)B錯(cuò)復(fù)習(xí)五分鐘分享名單了解圖像處理庫(kù)Knowledgeofimageprocessinglibraries3.1

Numpy數(shù)組創(chuàng)建數(shù)組重塑廣播3.1

Pillow圖像讀取圖像轉(zhuǎn)換色彩分離和合并03PART常見(jiàn)圖像處理工具庫(kù)

在實(shí)際處理中,可以采用工具軟件提升預(yù)處理效率。在Python環(huán)境中,常用的與圖像運(yùn)算和處理相關(guān)的庫(kù)有NumPy、SciPy、Pillow、Matplotlib、OpenCV等,3.1

NumPy數(shù)組創(chuàng)建圖像轉(zhuǎn)換廣播NumPy是Python語(yǔ)言的一個(gè)擴(kuò)展程序庫(kù),支持大量的維度數(shù)組與矩陣運(yùn)算,非常適合用于數(shù)字圖像的矩陣運(yùn)算。實(shí)驗(yàn)報(bào)告提交實(shí)驗(yàn)報(bào)告命名案例:1.NumPy的基本使用(姓名-學(xué)號(hào))提交:當(dāng)天統(tǒng)一完成提交實(shí)驗(yàn)報(bào)告:代碼部分,直接粘貼代碼,不要有截圖結(jié)果部分:直接將執(zhí)行結(jié)果截圖數(shù)組創(chuàng)建通過(guò)函數(shù)array()構(gòu)建numpy.array(object,dtype=None,order='C’)式中,object是數(shù)組或嵌套的數(shù)列,dtype是數(shù)組元素的數(shù)據(jù)類(lèi)型,order參數(shù)是索引數(shù)組的順序,C為行方向,F(xiàn)為列方向,A為任意方向(默認(rèn))?!景咐縿?chuàng)建一個(gè)矩陣A的語(yǔ)句為:importnumpy

A=numpy.array([[1,2],[3,4]],int)

數(shù)組創(chuàng)建empty()、zeros()、ones()Empty()用于創(chuàng)建一個(gè)未初始化的數(shù)組zeros()用于創(chuàng)建全0的數(shù)組;ones()用于創(chuàng)建全1的數(shù)組zeros()的語(yǔ)法格式為:numpy.zeros(shape,dtype=float,order='C’)

ones()語(yǔ)法格式為:numpy.ones(shape,dtype=np.uint8,order='C’)

式中,shape是數(shù)組形狀,dtype是數(shù)組元素類(lèi)型,order參數(shù)是數(shù)組的樣式?!景咐縿?chuàng)建一個(gè)全0的矩陣B語(yǔ)句為:B=numpy.ones((3,2),int)

語(yǔ)句執(zhí)行結(jié)果為:B:[[1

1][1

1][1

1]]

數(shù)組創(chuàng)建shape、ndim、size、dtype通過(guò)ndarray對(duì)象的ndim屬性能夠獲得數(shù)組的秩,NumPy數(shù)組的維數(shù)稱(chēng)為秩,一維數(shù)組的秩為1,二維數(shù)組的秩為2,以此類(lèi)推;通過(guò)shape屬性能夠獲得數(shù)組的形狀信息數(shù)組的形狀表示為一個(gè)元組,其中的元素為各個(gè)維中元素的數(shù)量。除此以外,還有size、dtype等屬性?!景咐繑?shù)組創(chuàng)建,創(chuàng)建一個(gè)矩陣A([1,2][3,4]),并打印A的形狀、秩、尺寸和類(lèi)型。

importnumpyasnp

A=np.array([[1,2],[3,4]],int)

print(A.shape)

print(A.ndim)

print(A.size)

print(A.dtype)

小練習(xí)(10分鐘)完成實(shí)驗(yàn)指導(dǎo)書(shū)1的練習(xí)1和2,并完成實(shí)驗(yàn)報(bào)告中相應(yīng)部分內(nèi)容。2)數(shù)組重塑

數(shù)組創(chuàng)建完成后,還可以通過(guò)reshape()改變數(shù)組形狀,前提目標(biāo)數(shù)組的元素總量不變arr.reshape(newshape,order='C')式中,arr是待改變的數(shù)組,newshape是目標(biāo)形狀,order是索引素組順序。

將形狀為(3,2)數(shù)組B轉(zhuǎn)變?yōu)樾螤顬椋?,3)的語(yǔ)句為:B.reshape((2,3),order='C’)

完成實(shí)驗(yàn)指導(dǎo)書(shū)練習(xí)3,(5分鐘)3)廣播

NumPy的“廣播”特性讓不同形狀的數(shù)組之間的也能進(jìn)行運(yùn)算NumPy中,當(dāng)兩個(gè)數(shù)組的后緣維度(從末尾開(kāi)始算起的維度)的軸長(zhǎng)相等,或是有一方的維度是1,仍然可以借助“廣播”的形式進(jìn)行計(jì)算3)廣播

【例1.1】計(jì)算出數(shù)組A:[[1,2],[3,4],[5,6]]與數(shù)組B:[[1,2]]進(jìn)行四則運(yùn)算的結(jié)果,并編碼驗(yàn)證。編寫(xiě)驗(yàn)證代碼如下:importnumpyasnp

A=np.array([[1,2],[3,4],[5,6]],int)

B=np.array([1,2])

print("A+B=",A+B)

print("A-B=",A-B)

print("AxB=",A*B)

print("A/B=",A/B)

完成實(shí)驗(yàn)指導(dǎo)書(shū)練習(xí)4,(10分鐘)Numpy基本使用【拓展案例】1.使用NumPy創(chuàng)建形狀為100*100,類(lèi)型為uint8的矩陣,矩陣的前10行元素值為0,后續(xù)10行為255,再后續(xù)10行為0,以此類(lèi)推,并使用Pillow顯示該矩陣,看看效果是怎么樣。

importnumpyasnp

fromPILimportImage

A=np.zeros((100,100),np.uint8)

foriinrange(11,100,20):

A[i:i+9,]=255

im=Image.fromarray(A)

im.show("result")完成實(shí)驗(yàn)指導(dǎo)書(shū)練習(xí)5,(5分鐘)下一次分享主題第1章計(jì)算機(jī)視覺(jué)概述復(fù)習(xí)【多選題】以下用于構(gòu)建數(shù)組的函數(shù)有?A

array().Breshape().Czeros().D.ones()【單選題】以下用于重塑數(shù)組的函數(shù)是?A

empty().Breshape().Czeros().D.ones()【判斷題】形狀為(2,3,3)和(1,3,3)的numpy數(shù)組可以進(jìn)行加減乘除運(yùn)算。A對(duì)B錯(cuò)分享時(shí)間3.2

Pillow圖像讀取圖像轉(zhuǎn)換色彩分離和合并Pillow是python3的圖像處理庫(kù),提供了基本的圖像處理功能,如讀寫(xiě)圖像、幾何變換、顏色變換等。前面介紹了圖像的不同表示方式、色彩空間等概念1)圖像讀取核心:Imageopen()函數(shù)讀取圖像,通過(guò)_show()函數(shù)顯示圖像讀取到圖像對(duì)象后,通過(guò)mode、size、height、width等屬性獲取圖像的色彩空間、尺寸、高度和寬度。conda

install

pillowpip

install

pillow

【例1.2】讀取圖片lena.jpg,獲取圖像的色彩空間、尺寸、高度和寬度信息。1)圖像讀取_show()類(lèi)顯示函數(shù),使用:Image._show(im)show():對(duì)象顯示函數(shù),使用:im.show(name)Numpy到Image:Im=Image.fromarray(arr)注意:Image圖像對(duì)象的組織形式為(H,W,C)與tensorflow一致【例1.2】使用NumPy創(chuàng)建形狀為(100,100,3)的矩陣,并使用Pillow顯示該矩陣1)圖像讀取類(lèi)型轉(zhuǎn)換:Image

to

Numpynp_im=numpy.array(pil_im)np_im是轉(zhuǎn)換成的NumPy數(shù)組,pil_im是Pillow的圖像對(duì)象。NumPy的二維數(shù)組(矩陣)也可以通過(guò)Pillow顯示為圖像,所用函數(shù)為fromarray()

【例1.3】讀取圖像cat.jpg,轉(zhuǎn)換為numpy類(lèi)型,并且打印數(shù)組的形狀和類(lèi)型。1)圖像讀取【例1.3】讀取圖像cat.jpg,轉(zhuǎn)換為numpy類(lèi)型,進(jìn)行運(yùn)算后轉(zhuǎn)換為Image并顯示。第1章計(jì)算機(jī)視覺(jué)概述3.2

Pillow圖像讀取圖像轉(zhuǎn)換色彩分離和合并Pillow是python3的圖像處理庫(kù),提供了基本的圖像處理功能,如讀寫(xiě)圖像、幾何變換、顏色變換等。前面介紹了圖像的不同表示方式、色彩空間等概念2)圖像轉(zhuǎn)換convert()函數(shù)支持灰度圖和彩色圖之間的模式轉(zhuǎn)換im.convert(mode)im是圖像對(duì)象,mode是轉(zhuǎn)換的目標(biāo)模式,取值“L”表示轉(zhuǎn)換為灰度圖,取值“RGB”表示轉(zhuǎn)換為彩色圖像【例1.4】讀取圖片cat.jpg,將其轉(zhuǎn)換為灰度圖完成實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)5(5分鐘)2)圖像轉(zhuǎn)換二值圖像的函數(shù)im.point(func)首先設(shè)置一個(gè)灰度閾值,然后將圖像對(duì)象中的每一個(gè)像素進(jìn)行轉(zhuǎn)換,小于灰度閾值的轉(zhuǎn)換為0,大于閾值的轉(zhuǎn)換為255

【例1.4】讀取圖片cat.jpg,將其二值圖像。完成實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)6(10分鐘)圖像的表示二值圖像、灰度圖像、彩色圖像圖像處理過(guò)程圖像獲取、圖像預(yù)處理、特征提取、高級(jí)處理等計(jì)算機(jī)視覺(jué)計(jì)算機(jī)視覺(jué)是一門(mén)研究如何使機(jī)器“看”的科學(xué),其目標(biāo)是實(shí)現(xiàn)對(duì)圖像的理解通過(guò)本課程,我們學(xué)習(xí)了本章小結(jié)第1章計(jì)算機(jī)視覺(jué)概述3.2

Pillow圖像讀取圖像轉(zhuǎn)換色彩分離和合并Pillow是python3的圖像處理庫(kù),提供了基本的圖像處理功能,如讀寫(xiě)圖像、幾何變換、顏色變換等。前面介紹了圖像的不同表示方式、色彩空間等概念3)色彩分離和合并split()和merge()函數(shù)分別用于色彩分離和色彩合并split()函數(shù)將RGB圖像分離成3個(gè)圖像,分別對(duì)應(yīng)原始圖像的紅、綠、藍(lán)通道。merge()函數(shù)與split()函數(shù)相反,將多個(gè)通道合并成彩色模式的圖像【例1.5】讀取圖片cat.jpg,將其進(jìn)行色彩分離和合并操作。完成實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)7(10分鐘)3)色彩分離和合并【案例】將兩幅圖分別進(jìn)行色彩分離,并進(jìn)行交叉合并完成實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)8(10分鐘)3)色彩分離和合并【案例】色相編輯完成實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)9(10分鐘)4)圖像保存save()保存圖像使用:im.save(savepath)注意:save只能用于保存RGB模式的圖像如果是其他模式,需要通過(guò)convert("RGB")函數(shù)轉(zhuǎn)換會(huì)RGB模式。完成實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)10(10分鐘)思考和拓展拓展一:使用NumPy創(chuàng)建形狀為100*100的矩陣,矩陣的前10行元素值為0,后續(xù)10行為255,在后續(xù)10行為0,以此類(lèi)推,并使用Pillow顯示該矩陣,看看效果是怎么樣?拓展二:隨便找兩幅相同尺寸的彩色圖,分別使用split()分離通道后,隨機(jī)從中選擇3個(gè)通道合并成一個(gè)新圖像,看看效果怎么樣?圖像的表示二值圖像、灰度圖像、彩色圖像圖像處理過(guò)程圖像獲取、圖像預(yù)處理、特征提取、高級(jí)處理等計(jì)算機(jī)視覺(jué)計(jì)算機(jī)視覺(jué)是一門(mén)研究如何使機(jī)器“看”的科學(xué),其目標(biāo)是實(shí)現(xiàn)對(duì)圖像的理解通過(guò)本課程,我們學(xué)習(xí)了本章小結(jié)第二章:OpenCV基本使用使用OpenCV讀取圖像編寫(xiě)第一個(gè)OpenCV程序OpenCV環(huán)境配置了解OpenCV的基礎(chǔ)知識(shí)3.Pillow模式轉(zhuǎn)換的函數(shù)是()A

changeto().Bconvert().Cpoint().Dmerge()4.色彩分離的函數(shù)是()A

open().Bimsplit()Csplit()Dmerge()復(fù)習(xí)1.

Pillow讀取圖像的函數(shù)是()A

imread().Bread().Copen()Dimopen()2.Pillow保存圖像的函數(shù)是()A

save()B

imsave()Cwrite().Dimwrite()01了解OpenCV的基礎(chǔ)知識(shí)OpenCV是什么OpenCV

OpenCV是一個(gè)開(kāi)源的跨平臺(tái)計(jì)算機(jī)視覺(jué)和機(jī)器學(xué)習(xí)軟件庫(kù)。由一系列C和C和少量C++類(lèi)構(gòu)成,實(shí)現(xiàn)了圖像處理和計(jì)算機(jī)視覺(jué)方面很多通用的算法OpenCV與其他視覺(jué)函數(shù)庫(kù)的性能比較OpenCV優(yōu)點(diǎn)OpenCV

能方便地與基于Python的其他軟件庫(kù)集成,如NumPy、SciPy、Matplotlib等。簡(jiǎn)化了計(jì)算機(jī)視覺(jué)程序和解決方案的開(kāi)發(fā)。擁有包括300多的跨平臺(tái)的中、高層API。OpenCV具有優(yōu)秀的性能表現(xiàn),運(yùn)行速度快。跨平臺(tái):運(yùn)行在Linux、Windows、Android和MacOS操作系統(tǒng)上OpenCV能夠

使用OpenCV

,可以完成讀寫(xiě)圖像捕獲并保存視頻過(guò)程圖像(過(guò)濾,變換)執(zhí)行特征檢測(cè)在視頻或圖像中檢測(cè)特定對(duì)象,如面部,眼睛,汽車(chē)。分析視頻,即估計(jì)其中的運(yùn)動(dòng),減去背景并跟蹤其中的對(duì)象。OpenCV主要應(yīng)用領(lǐng)域OpenCV模塊

OpenCV的基本單元是模塊,每個(gè)模塊都包含了大量函數(shù)。Core:核心功能模塊,模塊主要包含OpenCV庫(kù)的基礎(chǔ)結(jié)構(gòu)以及基本操作,例如OpenCV基本數(shù)據(jù)結(jié)構(gòu)、繪圖函數(shù)、數(shù)組操作相關(guān)函數(shù)、動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu)等Imgproc:圖像處理模塊,提供基本的圖像處理功能,包括濾波以及類(lèi)似的卷積操作。GPU:GPU加速庫(kù),提供基于CUDAGPU上的優(yōu)化加速。。dnn:深度神經(jīng)網(wǎng)絡(luò)模塊,支持主流深度學(xué)習(xí)框架訓(xùn)練生成與導(dǎo)出的模型.Feature2d:2D功能框架,包含用于檢測(cè)、描述、特征匹配等算法。Ml:機(jī)器學(xué)習(xí)模塊,包含了大量的統(tǒng)計(jì)模型和機(jī)器學(xué)習(xí)算法實(shí)現(xiàn),如K-近鄰、支持向量機(jī)、決策樹(shù)、神經(jīng)網(wǎng)絡(luò)等。Objdectect:目標(biāo)檢測(cè)模塊,包含人臉識(shí)別、行人檢測(cè)等算法,也可用于訓(xùn)練檢測(cè)器。第二章:OpenCV基本使用使用OpenCV讀取圖像編寫(xiě)第一個(gè)OpenCV程序OpenCV環(huán)境配置了解OpenCV的基礎(chǔ)知識(shí)02OpenCV的環(huán)境配置2.1python安裝2.2開(kāi)發(fā)工具安裝2.3OpenCV安裝OpenCV環(huán)境配置Python安裝Python的版本可分為Python2.x和Python3.x兩大類(lèi),簡(jiǎn)稱(chēng)Python2和Python3。Python3是當(dāng)前主推的Python版本,Python2.7已于2020年1月1日終止支持首先獲得python,訪問(wèn)Python官方網(wǎng)站下載Python3.6,下載完成后直接運(yùn)行安裝即可。OpenCV環(huán)境配置環(huán)境管理工具安裝使用環(huán)境管理工具Anaconda和集成開(kāi)發(fā)環(huán)境PyCharm協(xié)助開(kāi)發(fā)。Anaconda是開(kāi)源的Python發(fā)行版本和環(huán)境管理器。Anaconda集成了包括Conda、Python在內(nèi)的大量工具庫(kù),支持包括NumPy、OpenCV、TensorFlow等常用人工智能開(kāi)發(fā)依賴庫(kù)的環(huán)境配置。Anaconda官網(wǎng)下載安裝包,即可進(jìn)行安裝。PyCharm是一款專(zhuān)為Python打造的IDE,帶有一整套可以幫助用戶提高開(kāi)發(fā)效率的工具,如解釋器配置、代碼調(diào)試、語(yǔ)法高亮、項(xiàng)目管理、代碼跳轉(zhuǎn)、智能提示、代碼自動(dòng)補(bǔ)全、單元測(cè)試、版本控制等。OpenCV環(huán)境配置安裝OpenCV1、在線安裝。雙擊打開(kāi)Anaconda,選擇“Environments”,點(diǎn)擊列表左下角的“Create”按鈕新建一個(gè)Python環(huán)境,填寫(xiě)Python版本。OpenCV環(huán)境配置安裝OpenCV1、在線安裝。在新環(huán)境的未安裝依賴庫(kù)列表中搜索OpenCV并進(jìn)行安裝,安裝過(guò)程中會(huì)一并安裝一些依賴包,直接點(diǎn)擊“Apply”按鈕等待安裝完成即可。OpenCV環(huán)境配置安裝OpenCV1、在線安裝。安裝完成后,“OpenCV”庫(kù)會(huì)出現(xiàn)在新環(huán)境的已安裝列表中。OpenCV環(huán)境配置

安裝OpenCV2、本地安裝。如果網(wǎng)絡(luò)狀態(tài)不佳,在線安裝方式有可能導(dǎo)致失敗,因此可以采用本地安裝的方式訪問(wèn)OpenCV官網(wǎng),提前下載好對(duì)應(yīng)版本的安裝包。打開(kāi)Anaconda,點(diǎn)擊選擇已經(jīng)建立的環(huán)境,在彈出的菜單中,選擇“openterminal”,打開(kāi)命令行工具OpenCV環(huán)境配置安裝OpenCV2、本地安裝。使用命令行工具定位到安裝包所在目錄,輸入指令“pipinstall安裝包文件名”即可開(kāi)始本地安裝。第二章:OpenCV基本使用使用OpenCV讀取圖像編寫(xiě)第一個(gè)OpenCV程序OpenCV環(huán)境配置了解OpenCV的基礎(chǔ)知識(shí)編寫(xiě)第一個(gè)OpenCV程序03編寫(xiě)OpenCV第一個(gè)程序新建項(xiàng)目打開(kāi)PyCharm,選擇“CreateNewProject”進(jìn)入新項(xiàng)目創(chuàng)建界面,選擇“PurePython”項(xiàng)目類(lèi)別。指定項(xiàng)目存放位置“Location”,項(xiàng)目解釋器“ProjectInterpreter”選項(xiàng)選擇“Existinginterpreter”,二級(jí)下拉選擇之前已經(jīng)創(chuàng)建好的Anaconda環(huán)境名稱(chēng)。完成后點(diǎn)擊“create”完成創(chuàng)建編寫(xiě)OpenCV第一個(gè)程序開(kāi)始程序編寫(xiě)第一個(gè)OpenCV程序?qū)⒕帉?xiě)實(shí)現(xiàn)讀取、顯示和保存圖像的簡(jiǎn)單程序。該程序?qū)?shí)現(xiàn)圖像的讀取,圖片的顯示功能,圖片名稱(chēng)為cat.jpg。事先保存在項(xiàng)目所在的目錄中。OpenCV環(huán)境配置

代碼分析:importcv2,和NumPy和Pillow一樣,使用OpenCV之前,要先引入軟件庫(kù)。此處引入的模塊名稱(chēng)是cv2,意指相對(duì)于舊版本cv的升級(jí)版本。舊版本cv使用C語(yǔ)言開(kāi)發(fā),內(nèi)部是面向過(guò)程的實(shí)現(xiàn)方式,而cv2使用C++語(yǔ)言,內(nèi)部采用面向?qū)ο蟮木幊谭绞?。imread()函數(shù)用于讀取圖像;namedWindow()函數(shù)用于創(chuàng)建窗口,參數(shù)“cat”表示新建名稱(chēng)為“cat”的窗口,參數(shù)“1”表示窗口不可調(diào)整大??;imshow()用于將圖像顯示在窗口中;參數(shù)“cat”表示顯示在“cat”窗口。第2個(gè)參數(shù)表示將要顯示的圖像文件。waitKey()是等待按鍵的語(yǔ)句,可以讓圖像窗口一直顯示,直到任意按鍵被按下后繼續(xù)執(zhí)行。destroyAllWindows()函數(shù),表示關(guān)閉所有OpenCV創(chuàng)建的窗口。第二章:OpenCV基本使用復(fù)習(xí)分享時(shí)間OpenCV基本操作使用4.1圖像讀取4.2圖像轉(zhuǎn)換4.3色彩分離與合并04imread(filename[,flags])→retval

4.1

圖像讀取

OpenCV的imread()用于讀取圖像:函數(shù)說(shuō)明:(1)retval是讀取到的圖像對(duì)象,在OpenCV中是Mat類(lèi)型;(2)參數(shù)filename是將要讀取的圖像文件名;函數(shù)imread()支持大部分圖像格式,常用的包括位圖(*.bmp、*.dib)、JPEG圖像(*.jpg、*.jpeg)、網(wǎng)絡(luò)圖形(*.png)、TIFF文件(*.tiff、*.tif)等(3)flag是讀取標(biāo)記,可省略,不同標(biāo)記值代表含義不同,如-1表示讀取圖像格式不變,0表示單通道的灰度圖像,1表示三通道BGR圖像,為默認(rèn)值。4.1

圖像讀取在實(shí)際編碼過(guò)程中,相較于直接使用數(shù)字方式,大家更提倡使用OpenCV常量的方式。imread()函數(shù)的flag參數(shù)取值的常量表示如表所示im=cv2.imread(“cat.jpg”)#讀入圖像文件

print(im.shape)#(200,200,3)

print(im.size)#120000

print(im.dtype)#uint8

4.1

圖像讀取

獲取圖像的屬性信息使用imread()函數(shù)獲取圖像對(duì)象后,可以繼續(xù)獲取圖像的屬性信息,包括圖像形狀(shape)、像素?cái)?shù)(size)、數(shù)據(jù)類(lèi)型(dtype)等。解釋?zhuān)簊hape屬性返回圖像的行數(shù)、列數(shù)和通道數(shù)。size屬性返回圖像的像素?cái)?shù)量。dtype屬性返回的是圖像的數(shù)據(jù)類(lèi)型。4.1

圖像讀取【練習(xí)1】采用不同的flag讀取圖片,查看各自的形狀、尺寸和數(shù)據(jù)類(lèi)型結(jié)果:defaut(1026,1024,3)3151872uint8bgrim(1026,1024,3)3151872uint8unchange(1026,1024,4)4202496uint8grayim(1026,1024)1050624uint8完成實(shí)驗(yàn)報(bào)告練習(xí)1imshow(winname,mat)→None

imshow("Window1",cv2.imread("cat.jpg"))

4.2

圖像顯示

使用imshow()函數(shù)可以顯示圖像參數(shù)說(shuō)明:None表示函數(shù)沒(méi)有返回值;winname是窗口名稱(chēng)。如“Window1”。mat是圖像對(duì)象。提示:如果要將窗口創(chuàng)建和顯示分離,可以在使用imshow()函數(shù)之前,使用函數(shù)namedWindow()提前創(chuàng)建窗口。此處在imshow()語(yǔ)句前添加dWindow("Window1"),效果是一樣的。例如,在窗口中顯示圖像cat.jpg的語(yǔ)句為:destroyWindow(winname)→None

cv2.waitKey(5000)

cv2.destroyWindow("Window1")

4.2

圖像顯示

使用destroyWindow()可以銷(xiāo)毀圖像窗口參數(shù)說(shuō)明:None表示函數(shù)沒(méi)有返回值;winname是要銷(xiāo)毀的窗口名稱(chēng)。提示:在實(shí)際使用該函數(shù)通常搭配waitKey()函數(shù)使用。waitKey()用于監(jiān)聽(tīng)按鍵事件,當(dāng)監(jiān)聽(tīng)到按鍵被按下,則繼續(xù)執(zhí)行程序,或者設(shè)置等待時(shí)間。如果要直接銷(xiāo)毀所有OpenCV的創(chuàng)建的窗口,則使用destroyAllWindows()函數(shù)。如等待5秒后銷(xiāo)毀窗口,代碼為:4.2

圖像顯示

waitKey()和ASCII碼表:waitKey(waittime)→key

#key對(duì)應(yīng)ASCII碼(美國(guó)信息交換標(biāo)準(zhǔn)代碼)whileTrue:

ifcv2.waitKey(0)==27:

cv2.destroyAllWindows()

break監(jiān)聽(tīng)特定按鍵的實(shí)例:4.2圖像顯示【練習(xí)2】創(chuàng)建一個(gè)窗口“win”,在該窗口中默認(rèn)顯示“cat.jpg”.持續(xù)監(jiān)聽(tīng)鍵盤(pán),如果監(jiān)聽(tīng)到空格鍵(key==32),則顯示圖像在cat.jpg和little.png之間切換。如果監(jiān)聽(tīng)到ESC(key==27),則銷(xiāo)毀窗口。完成實(shí)驗(yàn)報(bào)告練習(xí)2

imwrite(filename,img[,params])→retval

cv2.imwrite(“l(fā)ena.jpg",cv2.imread("cat.jpg"))

4.3

圖像保存

imwrite()函數(shù)表示保存圖片到本地參數(shù)說(shuō)明:(1)retval表示返回保存圖像對(duì)象,為T(mén)rue或False;(2)參數(shù)filename是待保存文件地址的完整路徑,包含文件擴(kuò)展名;(3)img是被保存的圖像對(duì)象;(4)params是可選的保存參數(shù);如將讀出的cat.jpg文件保存為lena.jpg,語(yǔ)句為:4.1

圖像讀取【例】讀取圖片cat.jpg并顯示,等待按鍵后執(zhí)行窗口銷(xiāo)毀、圖像數(shù)據(jù)打印,并重新將圖像保存為cat1.jpg。完成實(shí)驗(yàn)報(bào)告練習(xí)3

4.1

圖像讀取運(yùn)行結(jié)果分析:首先讀取到的圖像顯示出來(lái)。執(zhí)行到“cv2.waitKey()”開(kāi)始等待,此時(shí)按下任意按鍵,圖像窗口會(huì)關(guān)閉。執(zhí)行結(jié)果窗口打印出圖像數(shù)據(jù)。圖像輸出數(shù)據(jù)片段如圖從圖中可以看出輸出的像素是3個(gè)元素的數(shù)組。需要注意的是,OpenCV默認(rèn)讀取的三通道圖像為BGR格式BGR復(fù)習(xí)1.

OpenCV讀取圖像的函數(shù)是?A

open()Bimread()Cload()Dimopen()2.OpenCV保存圖像的函數(shù)是?A

save()Bimsave()Cimwrite()write()3.

cv2.waitKey無(wú)限等待鍵盤(pán)按下事件的參數(shù)是?A

cv2.waitKey(5000)Bcv2.waitKey(-1)Ccv2.waitKey(1)Dcv2.waitKey(0)im=cv2.imread("cat.jpg",cv2.IMREAD_GRAYSCALE)

4.2

圖像轉(zhuǎn)換(1)

轉(zhuǎn)灰度圖像圖像處理過(guò)程中,為了減少減少數(shù)據(jù)量,提高計(jì)算效率,經(jīng)常需要將彩色圖轉(zhuǎn)換為灰度圖或二值圖像。方法一:以灰度圖的形式讀取圖片,直接將imread()函數(shù)的第2個(gè)參數(shù)設(shè)置為cv2.IMREAD_GRAYSCALE或0即可,語(yǔ)句為:im1=cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)

4.2

圖像轉(zhuǎn)換4.2.1轉(zhuǎn)灰度圖像OpenCV也專(zhuān)門(mén)提供了cvtColor(),用于不同顏色模式轉(zhuǎn)換的函數(shù),函數(shù)定義為:cvtColor(src,code[,dst[,dstCn]])→dst

其中:(1)

dst:表示轉(zhuǎn)換后的目標(biāo)圖像;(2)

src:要轉(zhuǎn)換的原始圖像;(3)

code:指定顏色空間轉(zhuǎn)換類(lèi)型編碼;(4)

dstCn:表示目標(biāo)圖像的通道數(shù),默認(rèn)為None,即保持原圖像的通道數(shù)。例如:將前面彩色圖像轉(zhuǎn)為灰度圖像,通過(guò)該函數(shù)實(shí)現(xiàn),將code參數(shù)設(shè)置為cv2.COLOR_BGR2GRAY4.2

圖像轉(zhuǎn)換常用cvtColor()的code參數(shù)如表所示:4.2

圖像轉(zhuǎn)換【例2.2】以默認(rèn)方式讀取圖片cat.jpg,將圖像轉(zhuǎn)為灰度圖,比較原始圖像與灰度圖的區(qū)別。完成實(shí)驗(yàn)報(bào)告練習(xí)4

4.2

圖像轉(zhuǎn)換代碼分析:(1)OpenCV默認(rèn)按照BGR的模式讀取圖像;(2)

通過(guò)cvtColor()函數(shù)轉(zhuǎn)變?yōu)镽GB模式;(3)

轉(zhuǎn)變?yōu)閱瓮ǖ赖幕叶葓D模式。從圖中可以看出,雖然BGR轉(zhuǎn)變?yōu)镽GB,但imshow()函數(shù)仍然按照B-G-R的通道順序顯示圖像,形成了通道錯(cuò)位。所以,RGB格式圖像在色彩上出現(xiàn)了明顯的變化,原來(lái)的R通道顯示為B通道,而原來(lái)的B通道則顯示為R通道。4.2

圖像轉(zhuǎn)換

4.2.2轉(zhuǎn)二值圖像二值圖像是只有“黑”和“白”兩種顏色的圖像,將原始圖像轉(zhuǎn)變?yōu)槎祱D像的基本原理是:設(shè)置一個(gè)閾值,將小于閾值的像素值改為0,大于閾值的像素值改為255。OpenCV的threshold()函數(shù)可以方便地實(shí)現(xiàn)二值圖像轉(zhuǎn)換。threshold函數(shù)定義threshold(src,thresh,maxval,type[,dst])→retval,dst

其中:src是原圖像對(duì)象,thresh表示中間閾值,可以任意設(shè)置,范圍在0到255之間。maxval是最大閾值,設(shè)置為255。type是閾值算法類(lèi)型,type設(shè)置為0,表示常規(guī)的閾值算法。dst是結(jié)果數(shù)據(jù)圖像,retval是閾值。4.2

圖像轉(zhuǎn)換【例2.3】以灰度圖的方式讀取圖片cat.jpg,將灰度圖轉(zhuǎn)為二值圖并顯示,比較灰度圖與二值圖的區(qū)別。完成實(shí)驗(yàn)報(bào)告練習(xí)5

4.2

圖像轉(zhuǎn)換結(jié)果分析:采用了NumPy的hstack()函數(shù)對(duì)圖像進(jìn)行橫向拼接的,將兩個(gè)圖片顯示在同一個(gè)窗口中。hstack()函數(shù)可以對(duì)相同形狀的圖像進(jìn)行橫向拼接,縱向拼接要使用vstack()函數(shù)。4.3色彩分離與合并

OpenCV可以對(duì)圖像進(jìn)行色彩的分離與合并,其中split()函數(shù)可用于拆分圖像的通道,merge()用于通道合并。split()函數(shù)定義為:split(m[,mv])→mv

式中,m是多通道數(shù)組,mv是通道矢量。如拆分1個(gè)BGR圖像,可使用語(yǔ)句為:b,g,r=cv2.split(im)

提示:OpenCV圖像通道排序順序是“藍(lán)色B-綠色G-紅色R”,并非習(xí)慣上認(rèn)為的“紅色R-綠色G-藍(lán)色B”。同時(shí),拆分后的圖像數(shù)據(jù)的維數(shù)會(huì)發(fā)生變化,不再是三維數(shù)組,而是二維數(shù)組,每個(gè)元素表示像素在拆分通道上的值。4.3色彩分離與合并

merge()用于通道合并,函數(shù)定義為:merge(mv[,dst])→dst

其中:dst是目標(biāo)圖像,mv是通道矢量。如要將通道b、g、r合并為BGR圖像為newim=cv2.merge([b,g,r])

4.3色彩分離與合并

【例2.4】將BGR圖像lena.jpg進(jìn)行通道拆分,再將通過(guò)順序變化后合并成新圖像完成實(shí)驗(yàn)報(bào)告練習(xí)6

4.3色彩分離與合并

代碼分析:(1)首先通過(guò)split()方法將RGB圖像cat.jpg

拆分成b、g和r通道(2)使用merge()函數(shù)將3個(gè)通道錯(cuò)序合并;(3)最后通過(guò)NumPy的拼接函數(shù)對(duì)結(jié)果分別進(jìn)行拼接顯示。從效果圖中能明顯看到通道錯(cuò)序后的變化,圖像從暖色調(diào)變成了冷色調(diào)。

NumPy與OpenCV互轉(zhuǎn)NumPy

to

OpenCV由于OpenCV是基于Numpy,所以不需要額外的轉(zhuǎn)換函數(shù),就可以直接被OpenCV使用。#【案例】使用numpy生成3個(gè)形狀為(200,200)的隨機(jī)矩陣,并使用opencv合并顯示。

importcv2

importnumpyasnp

b=np.random.randint(0,255,(200,200),dtype=np.uint8)

g=np.random.randint(0,255,(200,200),dtype=np.uint8)

r=np.random.randint(0,255,(200,200),dtype=np.uint8)

im=cv2.merge((b,g,r))

cv2.imshow("rs",im)

cv2.waitKey(0)#【案例】使用numpy生成形狀為(200,200,3)的全0數(shù)組,并使用opencv顯示。

importcv2

importnumpyasnp

arr=np.zeros((200,200,3),dtype=np.uint8)

cv2.imshow("rs",arr)

cv2.waitKey(0)

cv2.destroyAllWindows()NumPy與OpenCV互轉(zhuǎn)OpenCV

to

Numpy由于OpenCV是基于Numpy,所以不需要額外的轉(zhuǎn)換函數(shù),就可以直接使用Numpy的運(yùn)算。#【練習(xí)8】Opencv讀取圖像cat.jpg,對(duì)圖像對(duì)每個(gè)像素進(jìn)行數(shù)值運(yùn)算,并顯示,查看效果。

完成實(shí)驗(yàn)報(bào)告練習(xí)7

拓展練習(xí)【案例】使用OpenCV實(shí)現(xiàn)多圖交叉通道合并,查看合并效果。完成實(shí)驗(yàn)報(bào)告練習(xí)8

拓展練習(xí)【案例】色相編輯完成實(shí)驗(yàn)報(bào)告練習(xí)9

下一次分享思考題

問(wèn)題一:學(xué)習(xí)OpenCV的環(huán)境配置方法,并在自己的電腦上完成環(huán)境配置?問(wèn)題二:找兩幅相同尺寸的彩色圖,分別使用split()分離通道后,隨機(jī)從中選擇3個(gè)通道合并成一個(gè)新圖像,看看效果怎么樣第3章給圖像加濾鏡

1.3

圖像濾鏡

1.3

圖像濾鏡

卷積運(yùn)算濾鏡變換的模板是一個(gè)單通道浮點(diǎn)矩陣,被稱(chēng)為卷積核,相應(yīng)的計(jì)算規(guī)則被稱(chēng)為卷積運(yùn)算。移動(dòng)卷積核的過(guò)程中,有“步幅”的概念,用于指定卷積核在輸入矩陣上的移動(dòng)幅度,如步幅為1,每次移動(dòng)1位,步幅為n,則每次移動(dòng)n位。1.3

圖像濾鏡

處理不了的邊界1.3

圖像濾鏡

卷積運(yùn)算解決邊界問(wèn)題的1個(gè)有效的辦法是邊緣填補(bǔ),主要填補(bǔ)方法如下:填補(bǔ)方法描述cv2.BORDER_DEFAULT邊界默認(rèn):OpenCV默認(rèn)的方法,自動(dòng)填充圖像邊界,效果像是映像一樣。cv2.BORDER_CONSTANT邊界常數(shù):使用常數(shù)填充邊界,如0或255。cv2.BORDER_REPLICATE邊界復(fù)制:用已知的邊緣像素值填充邊界。cv2.BORDER_WRAP邊界包裝:用另外一邊的像素來(lái)補(bǔ)償填充。2.3函數(shù)語(yǔ)法卷積函數(shù)該函數(shù)支持任意卷積核的卷積運(yùn)用,呈現(xiàn)模糊、銳化、浮雕等濾鏡效果。filter2D()函數(shù)定義為:filter2D(src,ddepth,kernel[,dst[,anchor[,delta[,borderType]]]])→dstdst是結(jié)果圖像;src是輸入圖像;ddepth是結(jié)果圖形的深度,設(shè)置為-1,表示圖像深度與輸入圖像一致;kernal是卷積核,anchor:錨點(diǎn),默認(rèn)為(-1,-1)borderType是邊緣補(bǔ)充方式,OpenCV默認(rèn)使用cv2.BORDER_DEFAULT方式。2.3函數(shù)語(yǔ)法例如::[[35799][35799][35799][35799][35799]][[357910][357910][357910][357910][357910]][[47101310][35795][35795][35795][23450]]1.3

圖像濾鏡

卷積運(yùn)算卷積運(yùn)算可以產(chǎn)生Photoshop等圖像處理軟件中的各種濾鏡效果,如模糊、銳化、輪廓、浮雕等。常用的卷積核矩陣如下:第3章給圖像加濾鏡

復(fù)習(xí)編程實(shí)現(xiàn)明確任務(wù)內(nèi)容學(xué)習(xí)圖像運(yùn)算的基礎(chǔ)知識(shí)圖像運(yùn)算基本知識(shí)

1.1圖像運(yùn)算1.3圖像濾鏡1.2基本繪圖011.1圖像運(yùn)算

濾鏡的實(shí)現(xiàn)建立在圖像運(yùn)算的基礎(chǔ)上,學(xué)習(xí)編寫(xiě)濾鏡小程序之前,先要了解圖像之間是如何進(jìn)行運(yùn)算的。圖像之間運(yùn)算的主要內(nèi)容有基本運(yùn)算、繪圖、圖像變換和圖像濾鏡。根據(jù)圖像的數(shù)學(xué)特征,圖像基本運(yùn)算可分為點(diǎn)運(yùn)算、代數(shù)運(yùn)算、邏輯運(yùn)算和幾何運(yùn)算。1.1圖像運(yùn)算

1.1圖像運(yùn)算

1.1圖像運(yùn)算

點(diǎn)運(yùn)算1)如果a>1,輸出圖像的對(duì)比度增大(灰度擴(kuò)展)2)如果0<a<1,輸出圖像的對(duì)比度減少(灰度壓縮)3)如果a<0,輸出圖像的暗區(qū)域?qū)⒆兞?,亮區(qū)域變暗3.1圖像運(yùn)算

完成實(shí)驗(yàn)報(bào)告練習(xí)13.1圖像運(yùn)算

3.1圖像運(yùn)算

OpenCV圖像代數(shù)運(yùn)算主要函數(shù)3.1圖像運(yùn)算

符號(hào)方法與函數(shù)方法運(yùn)算過(guò)程3.1圖像運(yùn)算

代數(shù)運(yùn)算【例】采用符號(hào)法和函數(shù)法對(duì)圖像做代數(shù)運(yùn)算,比較運(yùn)算結(jié)果。完成實(shí)驗(yàn)報(bào)告練習(xí)2.3.1圖像運(yùn)算

代數(shù)運(yùn)算代碼分析:原則上進(jìn)行代數(shù)運(yùn)算的2個(gè)圖像的形狀和類(lèi)型必須保持一致,如果大小不一致,廣播特性將會(huì)發(fā)揮作用。如Add()函數(shù)的參數(shù)可以是圖像和圖像,也可以是圖形和數(shù)值。

3.1圖像運(yùn)算

邏輯運(yùn)算邏輯運(yùn)算是指對(duì)兩幅或多幅圖像的對(duì)應(yīng)像素做邏輯與、或、異或、非等運(yùn)算。常規(guī)邏輯運(yùn)算的形式是按位運(yùn)算,如果圖像數(shù)據(jù)類(lèi)型是8位整數(shù),要進(jìn)行邏輯運(yùn)算,首先要將整數(shù)轉(zhuǎn)換為8位的二進(jìn)制數(shù),再對(duì)8位二進(jìn)制數(shù)按位進(jìn)行邏輯運(yùn)算,最后將結(jié)果再轉(zhuǎn)換為8位整數(shù)。例如:有數(shù)值1為198,數(shù)值2為219,他們的二進(jìn)制分別是11000110、11011011,分別將他們進(jìn)行邏輯運(yùn)算,結(jié)果如下:數(shù)值(198與219)結(jié)果(十進(jìn)制值)結(jié)果(二進(jìn)制值)與運(yùn)算19411000010或運(yùn)算22311011111異或運(yùn)算2900011101非運(yùn)算(數(shù)值1)57001110013.1圖像運(yùn)算

邏輯運(yùn)算邏輯運(yùn)算的一個(gè)典型應(yīng)用是掩模。在圖像處理過(guò)程中,經(jīng)常會(huì)使用特定的圖像全局或局部地對(duì)待處理圖像進(jìn)行遮擋,以控制圖像處理的區(qū)域或處理過(guò)程,此處用于覆蓋的特定圖像被稱(chēng)為掩模,也稱(chēng)為掩碼。掩模在OpenCV中非常普遍,如add(src1,src2,mask)函數(shù)中mask指的就是掩模。掩模的實(shí)現(xiàn)采用了邏輯與運(yùn)算的原理,即原圖像與0進(jìn)行邏輯與運(yùn)算,結(jié)果是0,與1進(jìn)行與運(yùn)算,結(jié)果為原圖像值。于是,只要設(shè)置好值為0和1的掩碼,就能夠達(dá)到遮擋部分區(qū)域的效果。3.1圖像運(yùn)算

邏輯運(yùn)算【例】讀取灰度圖cat.jpg,為圖像加上掩模,只顯示頭部區(qū)域。代碼分析:以灰度圖方式讀取圖像后,使用zeros()函數(shù)新建一個(gè)形狀與類(lèi)型和原圖像一樣的全0數(shù)組,并設(shè)置數(shù)組的中心區(qū)域值為255,即二進(jìn)制數(shù)11111111。OpenCV的bitwise_and()函數(shù)用于進(jìn)行圖像之間的邏輯與操作。完成實(shí)驗(yàn)報(bào)告練習(xí)33.1圖像運(yùn)算

邏輯運(yùn)算程序運(yùn)行效果:第3章給圖像加濾鏡

復(fù)習(xí)【單選】圖像的值為100和250的兩個(gè)像素通過(guò)“+”運(yùn)算結(jié)果為?

A

350

B

100

C

255

D

94【單選】圖像的值為100和250的兩個(gè)像素通過(guò)add()函數(shù)運(yùn)算結(jié)果為?

A

350

B

100

C

255

D

943.1圖像運(yùn)算

幾何運(yùn)算幾何運(yùn)算也稱(chēng)為幾何變換,相較于前面不會(huì)改變像素位置的運(yùn)算類(lèi)型,幾何運(yùn)算是一類(lèi)能夠?qū)崿F(xiàn)像素坐標(biāo)變換的運(yùn)算。從變換性質(zhì)來(lái)分,幾何變換可以分為:(1)圖像的位置變換(平移、鏡像、旋轉(zhuǎn))(2)圖像的形狀變換(放大、縮?。?)圖像的復(fù)合變換3.1圖像運(yùn)算

幾何運(yùn)算縮放:resize(src,dsize[,dst[,fx[,fy[,interpolation]]]])→dst其中:src是輸入圖像,dsize是輸出圖像大小,如(100,100);其他可用替代的方式還有設(shè)置水平縮放比例fx和垂直縮放比例fy。圖像大小和縮放比例不能同時(shí)使用,如使用縮放比例,dsize需要設(shè)置為None。Interpolation是插值方式,用于選擇在縮放過(guò)程中對(duì)無(wú)法映射的像素賦值的方式,在實(shí)際使用的時(shí)候可以不用特意去設(shè)置,使用默認(rèn)方式(INTER_LINEAR)即可。此處的dsize是(寬-x軸,高-y軸),而np.shape獲得的多維數(shù)組的默認(rèn)存儲(chǔ)方式是C,先行后列,即形狀為(高-行數(shù),寬-列數(shù),通道)示例語(yǔ)句:

dst=cv2.resize(src,(100,100))dst=cv2.resize(src,dsize=None,fx=2,fy=3)3.1圖像運(yùn)算

幾何運(yùn)算縮放:resize(src,dsize[,dst[,fx[,fy[,interpolation]]]])→dst其中:示例語(yǔ)句:dst=cv2.resize(src,(100,100),interpolation=cv2.INTER_NEAREST)interpolation 所用的插值方法INTER_NEAREST 最近鄰插值INTER_LINEAR 雙線性插值(默認(rèn)設(shè)置)INTER_AREA 使用像素區(qū)域關(guān)系進(jìn)行重采樣。它可能是圖像抽取的首選方法,因?yàn)樗鼤?huì)產(chǎn)生無(wú)云紋理的結(jié)果。但是當(dāng)圖像縮放時(shí),它類(lèi)似于INTER_NEAREST方法。INTER_CUBIC 4x4像素鄰域的雙三次插值INTER_LANCZOS48x8像素鄰域的Lanczos插值Resize()3.1圖像運(yùn)算

幾何運(yùn)算翻轉(zhuǎn):flip(src,flipCode[,dst])→dst

dst是輸出圖像,src是輸入圖像,filpCode是旋轉(zhuǎn)類(lèi)型,0表示繞著x軸翻轉(zhuǎn);正數(shù)如1、2等為繞著y軸翻轉(zhuǎn);負(fù)數(shù)如-1、-2等為繞著x軸、y軸同時(shí)翻轉(zhuǎn)。示例語(yǔ)句:

dst=cv2.flip(src,1)

3.1圖像運(yùn)算

幾何運(yùn)算翻轉(zhuǎn):flip(src,flipCode[,dst])→dst

仿射變換和透視變換

本質(zhì):矩陣運(yùn)算區(qū)別:仿射:基于3個(gè)固定頂點(diǎn)的變換透視:基于4個(gè)固定頂點(diǎn)的變換OpenCV函數(shù):warpAffine(img,M,shape)warpPerspective(img,M,shape)1803.1圖像運(yùn)算

放射變換仿射:warpAffine(src,M,dsize[,dst[,flags[,borderMode[,borderValue]]]])→dst其中:dst是輸出圖像,src是輸入圖像,M代表一個(gè)2×3的變換矩陣,通過(guò)使用不同的變換矩陣,就能實(shí)現(xiàn)不同的變換功能;dsize是輸出圖像的尺寸大小。仿射變換通過(guò)一系列變換的復(fù)合實(shí)現(xiàn),能夠完成平移、縮放、翻轉(zhuǎn)、旋轉(zhuǎn)和剪切等幾何變換。示例語(yǔ)句:

dst=cv2.warpAffine(src,M,(200,200))

3.1圖像運(yùn)算

3.1圖像運(yùn)算

放射變換常用M變換矩陣變換類(lèi)型變換矩陣平移縮放旋轉(zhuǎn)翻轉(zhuǎn)切變3.1圖像運(yùn)算

仿射變換【例】讀取灰度圖cat.jpg,使用平移矩陣對(duì)圖像做簡(jiǎn)單平移操作。代碼如下:完成實(shí)驗(yàn)43.1圖像運(yùn)算

仿射變換通過(guò)函數(shù)獲得M參數(shù):center:旋轉(zhuǎn)中心位置angle:旋轉(zhuǎn)角度scale:圖像縮放比例M=cv2.getRotationMatrix2D(center,angle,scale)【例】,要以圖像中心為圓點(diǎn),逆時(shí)針旋轉(zhuǎn)45度,并將目標(biāo)圖像縮小為原始圖像的0.6倍:完成實(shí)驗(yàn)5透視變換cv2.warpPerspective(src,M,dsize=(cols,rows))參數(shù):

src:原圖

M:一個(gè)3x3的變換矩陣

dsize:輸出圖像的尺寸大小,

先指定(第一個(gè)參數(shù)是)col,再指定(第二個(gè)參數(shù)是)rowM如何得到?透視變換cv2.warpPerspective(src,M,dsize=(cols,rows))完成實(shí)驗(yàn)61.2

OpenCV基本繪圖計(jì)算機(jī)中圖像是以數(shù)組的形式存儲(chǔ),數(shù)組中的值代表圖像某個(gè)像素點(diǎn)的像素值,只要能對(duì)數(shù)組的值進(jìn)行操作,就可以實(shí)現(xiàn)繪圖。OpenCV提供了封裝好的繪圖函數(shù),不需要關(guān)心如何修改像素值,直接調(diào)用就可以繪制圖形,包括直線、矩形、多邊形、圓、橢圓、文字等。部分函數(shù)如下:函數(shù)描述line()在輸入圖像上畫(huà)直線arrowedLine()畫(huà)帶箭頭的直線rectangle()畫(huà)矩形circle()畫(huà)圓形ellipse()畫(huà)橢圓putText()顯示文字1.2

OpenCV基本繪圖

【例3.5】新建一個(gè)400×400尺寸的黑色畫(huà)板,在畫(huà)板上進(jìn)行基本繪圖。代碼如下:完成實(shí)驗(yàn)7拓展繪圖練習(xí)使用opencv繪圖函數(shù),繪制國(guó)旗(允許使用AI工具生成Opencv代碼)/guoqing/guoqi/第3章給圖像加濾鏡

1.3

圖像濾鏡

1.3

圖像濾鏡

卷積運(yùn)算濾鏡變換的模板是一個(gè)單通道浮點(diǎn)矩陣,被稱(chēng)為卷積核,相應(yīng)的計(jì)算規(guī)則被稱(chēng)為卷積運(yùn)算。移動(dòng)卷積核的過(guò)程中,有“步幅”的概念,用于指定卷積核在輸入矩陣上的移動(dòng)幅度,如步幅為1,每次移動(dòng)1位,步幅為n,則每次移動(dòng)n位。1.3

圖像濾鏡

處理不了的邊界1.3

圖像濾鏡

卷積運(yùn)算解決邊界問(wèn)題的1個(gè)有效的辦法是邊緣填補(bǔ),主要填補(bǔ)方法如下:填補(bǔ)方法描述cv2.BORDER_DEFAULT邊界默認(rèn):OpenCV默認(rèn)的方法,自動(dòng)填充圖像邊界,效果像是映像一樣。cv2.BORDER_CONSTANT邊界常數(shù):使用常數(shù)填充邊界,如0或255。cv2.BORDER_REPLICATE邊界復(fù)制:用已知的邊緣像素值填充邊界。cv2.BORDER_WRAP邊界包裝:用另外一邊的像素來(lái)補(bǔ)償填充。2.3函數(shù)語(yǔ)法卷積函數(shù)該函數(shù)支持任意卷積核的卷積運(yùn)用,呈現(xiàn)模糊、銳化、浮雕等濾鏡效果。filter2D()函數(shù)定義為:filter2D(src,ddepth,kernel[,dst[,anchor[,delta[,borderType]]]])→dstdst是結(jié)果圖像;src是輸入圖像;ddepth是結(jié)果圖形的深度,設(shè)置為-1,表示圖像深度與輸入圖像一致;kernal是卷積核,anchor:錨點(diǎn),默認(rèn)為(-1,-1)borderType是邊緣補(bǔ)充方式,OpenCV默認(rèn)使用cv2.BORDER_DEFAULT方式。2.3函數(shù)語(yǔ)法例如::#對(duì)類(lèi)型為uint8的numpy矩陣做卷積運(yùn)算,

使用不同的插值方式,查看卷積結(jié)果。代碼如下:

importcv2

importnumpyasnp

A=np.array((

[1,2,3,4,5],

[1,2,3,4,5],

[1,2,3,4,5],

[1,2,3,4,5],

[1,2,3,4,5]),dtype=np.uint8)

kernel=np.array(([0,-1,0],[0,1,1],[0,1,0]),dtype="float32")

des=cv2.filter2D(A,-1,kernel,borderType=cv2.BORDER_DEFAULT)

des1=cv2.filter2D(A,-1,kernel,borderType=cv2.BORDER_REPLICATE)

des2=cv2.filter2D(A,-1,kernel,borderType=cv2.BORDER_CONSTA

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論