天天看點

opencv學習3的繪圖函數

目标

• 學習使用 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)      
opencv學習3的繪圖函數

結果

winname = 'example'
cv2.namedWindow(winname)
cv2.imshow(winname, img)
cv2.waitKey(0) 
cv2.destroyWindow(winname)