【第三節(jié)】OpenCV中的繪圖函數(shù)
目標(biāo)
????學(xué)習(xí)使用OpenCV繪制不同的幾何圖形
????你將會(huì)學(xué)習(xí)使用到這些函數(shù):????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?CV2.line(),CV2.circle(),CV2.rectangle(),CV2.ellipse(),CV2putText()等。
參數(shù)
上面所有的繪圖函數(shù)都需要設(shè)置下面的這些參數(shù):
img:你想要繪制圖形的那副圖像。
color:形狀的顏色。以RGB為例,需要傳入一個(gè)元組,例如:(255,0,0)代表藍(lán)色。對(duì)于灰度圖像只需要傳入灰度值。
thickness:線(xiàn)條的粗細(xì)。如果給一個(gè)閉合圖形設(shè)置為-1,那么這個(gè)圖形就會(huì)被填充。默認(rèn)值是1。
linetype:線(xiàn)條的類(lèi)型,8連接抗鋸齒。默認(rèn)情況是8連接。
1、畫(huà)線(xiàn)
????????要畫(huà)一條線(xiàn),你只要告訴函數(shù)這條線(xiàn)的起點(diǎn)和終點(diǎn)。我們下面會(huì)畫(huà)一條從左上方到右下方的藍(lán)色線(xiàn)段。
2、畫(huà)矩形
????????要畫(huà)一個(gè)矩形,你需要告訴函數(shù)的左上角頂點(diǎn)和右下角頂點(diǎn)的坐標(biāo)。這次我們會(huì)在圖像的右上角畫(huà)一個(gè)綠色的矩形。
3、畫(huà)圓
????????要畫(huà)圓的話(huà),只需要指定圓形的中心點(diǎn)坐標(biāo)和半徑大小。我們?cè)谏厦娴木匦沃挟?huà)一個(gè)圓。
4、畫(huà)橢圓
????????畫(huà)橢圓比較復(fù)雜,我們要多輸入幾個(gè)參數(shù)。一個(gè)參數(shù)是中心點(diǎn)的位置坐標(biāo)。下一個(gè)參數(shù)是長(zhǎng)軸和短軸的長(zhǎng)度。橢圓沿逆時(shí)針?lè)较蛐D(zhuǎn)的角度。橢圓弧沿順時(shí)針?lè)较蚱鹗嫉慕嵌群徒Y(jié)束角度,如果是0跟360,就是整個(gè)橢圓。查看CV2.ellipse()可以得到更多信息。下面的例子是在圖片的中心繪制半個(gè)橢圓。
5、畫(huà)多邊形
????????畫(huà)多邊形,需要指定每個(gè)頂點(diǎn)的坐標(biāo)。用這些點(diǎn)的坐標(biāo)構(gòu)建一個(gè)大小等于行數(shù)X1X2的數(shù)組,行數(shù)就是點(diǎn)的數(shù)目。這個(gè)數(shù)組的數(shù)據(jù)類(lèi)型必須為int32。這里畫(huà)一個(gè)黃色的具有四個(gè)頂點(diǎn)的多邊形。
注意:如果第三個(gè)參數(shù)是False,我們得到的多邊形是不閉合的
注意:CV2.polylines()可以被用來(lái)畫(huà)很多條線(xiàn)。只需要把想要畫(huà)的線(xiàn)放在一個(gè)列表中,將這個(gè)列表傳給函數(shù)就可以了。每條線(xiàn)都會(huì)被獨(dú)立繪制。這會(huì)比用CV2.line()一條一條的繪制要快一些。
6、在圖片上添加文字
????????要在圖片上繪制文字,你需要設(shè)置下列參數(shù):
你繪制的文字
你要繪制的位置
字體類(lèi)型(通過(guò)查看CV2.putText()的文檔找到支持的字體)
字體的大小
文字的一般屬性如顏色、粗細(xì)、線(xiàn)條的類(lèi)型等。為了更好看一點(diǎn)推薦使用linetype=CV2.LINE_AA。
在圖像上繪制白色的OpenCV。
警告:所有的繪圖函數(shù)的返回值都是None,所以不能使用img=CV2.line(img,(0,0),(511,511),(255,0,0),5)
結(jié)果
????????下面就是最終結(jié)果了,通過(guò)前面學(xué)到的知識(shí)把它顯示出來(lái)吧!
