函數(shù):
cv2.line(), cv2.circle(), cv2.rectangle(), cv2.ellipse(), cv2.putText()
這些函數(shù)里蟆盹,你會發(fā)現(xiàn)一些通用的參數(shù):
·img:你要畫形狀的圖片
·color:形狀的顏色逃片。對于BGR迷雪,傳一個元組進去,比如(255,0,0)是藍色沙合。 對于灰度圖,傳一個灰度值。
·thickness:線或者圓的粗細刀荒。如果傳了-1給一個封閉圖形比如圓,它會充滿圖形棘钞。默認的thickness = 1
·lineType: 線的類型缠借,比如8-connected,反鋸齒等宜猜。默認情況下是8-connected泼返。cv2.LINE_AA是反鋸齒,在曲線時很好看姨拥。
畫線
要畫線绅喉,你需要傳線的起點坐標和終點坐標渠鸽。我們來建一個黑色圖片然后從左上角到右下角畫一個藍線。
import numpy as np
import cv2
# Create a black image
img = np.zeros((512, 512, 3), np.uint8)
# Draw a diagonal blue line with thickness of 5 px
img = cv2.line(img,(0,0),(511,511),(255,0,0),5)
畫矩形
要畫矩形柴罐,你需要矩形的左上角和右下角拱绑。這次我們在圖片右上角畫一個綠色矩形
img = cv2.rectangle(img,(384,0),(510,128),(0,255,0),3)
畫圓
要畫圓,你需要中心點坐標和半徑丽蝎,我們在上面的矩形里畫一個圓
img = cv2.circle(img,(447,63),63,(0,0,255),-1)
畫橢圓
要畫橢圓猎拨,我們需要傳一些參數(shù),一個參數(shù)是中心點坐標(x, y).下一個參數(shù)是長軸長度和短軸長度屠阻。angle是橢圓逆時針旋轉(zhuǎn)的角度红省。startAngle和endAngle指出長軸順時針方向起始和終點角度。如果是從0到360就會是整個橢圓国觉。要了解更多可以看cv2.ellipse()的文檔吧恃。下面的例子畫在圖片中心畫半個橢圓。
img = cv2.ellipse(img,(256,256),(100,50),0,0,180,255,-1)
畫多邊形
要畫多邊形麻诀,首先你需要頂點坐標痕寓。把這些點放到數(shù)組里ROWSx1x2,ROWS是頂點的數(shù)量蝇闭,應(yīng)該是int32類型呻率。我們畫一個小多邊形一共四個頂點,顏色是黃色呻引。
pts = np.array([[10,5],[20,30],[70,20],[50,10]],np.int32)
pts = pts.reshape((-1,1,2))
img = cv2.polylines(img,[pts],True,(0,255,255))
注意:
如果第三個參數(shù)是False礼仗,你會得到一個連接所有點的圖形,而不是一個封閉 圖形逻悠。
注意:
cv2.polylines()可以被用來畫多條線元践,值需要建一個包含所有線的列表,然后把它傳給函數(shù)就行了童谒。所有線都會被獨立繪制单旁。這比每條線都調(diào)用一次cv2.line()更快更好的方法。
給圖片添加文字
要給圖片添加文字饥伊,你需要下面的東西:
·你要寫的文字
·你要放字的位置坐標
·字體(cv2.putText()的文檔里可以查看支持的字體)
·字大小
·常規(guī)屬性比如顏色象浑,厚度,線的類型等撵渡,要更好看的畫可以lineType = cv2.LINE_AA
我們來寫一個白色的OpenCV在圖片上
font = cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(img, 'OpenCV', (10,500), font, 4,(255,255,255), 2, cv2.CV_AA)
結(jié)果
現(xiàn)在來看最終的結(jié)果融柬,根據(jù)之前學的,顯示圖片
在橢圓函數(shù)里用的角不是圓里用的角趋距。