目标
• 學習使用 OpenCV 繪制不同幾何圖形
• 你将會學習到這些函數:
cv2.line(),cv2.circle(),cv2.rectangle(),
cv2.ellipse(),cv2.putText() 等。代碼
上面所有的這些繪圖函數需要設定下面這些參數:
• img:你想要繪制圖形的那幅圖像。
• color:形狀的顔色。以 RGB 為例,需要傳入一個元組,例如:(255,0,0)代表藍色。對于灰階圖隻需要傳入灰階值。
• thickness:線條的粗細。如果給一個閉合圖形設定為 -1,那麼這個圖形就會被填充。預設值是 1.
• linetype:線條的類型,8 連接配接,抗鋸齒等。預設情況是 8 連接配接。cv2.LINE_AA為抗鋸齒,這樣看起來會非常平滑。
.1、 畫線
要畫一條線,你隻需要告訴函數這條線的起點和終點。我們下面會畫一條從左上方到右下角的藍色線段。
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
cv2.line(img,(0,0),(511,511),(255,0,0),5)#起點(0,0) 終點(512,512),顔色b,線粗5
.2 畫矩形
要畫一個矩形,你需要告訴函數的左上角頂點和右下角頂點的坐标。這次我們會在圖像的右上角話一個綠色的矩形。
cv2.rectangle(img,(384,0),(510,128),(0,255,0),3)`
3 畫圓
要畫圓的話,隻需要指定圓形的中心點坐标和半徑大小。我們在上面的矩形中畫一個圓。
cv2.circle(img,(447,63), 63, (0,0,255), -1)#-1代表填充
.4 畫橢圓
畫橢圓比較複雜,我們要多輸入幾個參數。一個參數是中心點的位置坐标。下一個參數是長軸和短軸的長度。橢圓沿逆時針方向旋轉的角度。橢圓弧演順時針方向起始的角度和結束角度,如果是 0 和360,就是整個橢圓。檢視cv2.ellipse() 可以得到更多資訊。下面的例子是在圖檔的中心繪制半個橢圓。
cv2.ellipse(img,(256,256),(100,50),0,0,180,255,-1)
.5 畫多邊形
畫多邊形,需要指點每個頂點的坐标。用這些點的坐标建構一個大小等于行數 X1X2 的數組,行數就是點的數目。這個數組的資料類型必須為 int32。這裡畫一個黃色的具有四個頂點的多邊形。
pts=np.array([[10,5],[20,30],[70,20],[50,10]], np.int32)
pts=pts.reshape((-1,1,2))
# 這裡 reshape 的第一個參數為-1,
注意:如果第三個參數是 False,我們得到的多邊形是不閉合的(首尾不相連)
.6 在圖檔上添加文字
要在圖檔上繪制文字,你需要設定下列參數:
• 你要繪制的文字
• 你要繪制的位置
• 字型類型(通過檢視 cv2.putText() 的文檔找到支援的字型)
• 字型的大小
• 文字的一般屬性如顔色,粗細,線條的類型等。為了更好看一點推薦使用
linetype=cv2.LINE_AA。
在圖像上繪制白色的 OpenCV。
font=cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(img,'OpenCV',(10,500), font, 4,(255,255,255),2)
結果
winname = 'example'
cv2.namedWindow(winname)
cv2.imshow(winname, img)
cv2.waitKey(0)
cv2.destroyWindow(winname)