【OpenCv-Python】三、Drawing Functions in OpenCv OpenCv 中的繪圖函數

OpenCv 中的繪圖函數

目標

  • 學會用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 提供了抗鋸齒線條,看起來很適合畫曲線。

3.1 畫線

想要畫一條線,你需要確定線的開始和結束的座標。我們將要創建一個黑色背景的圖片,在圖片上畫一條從左上方到右下方的藍色線條。

import numpy as np
import cv2

#創建一個黑色圖片 np.zeros()返回一個填充爲0的數組
img = np.zeros((512,512,3),np.uint8)

#畫一條5px粗的藍色對角線
img = cv2.line(img,(0,0),(511,511),(255,0,0),5)

3.2 畫矩形

想要畫一個矩形,你需要確定函數的左上角頂點和右下角頂點的座標。這次我們會在圖像右上角畫一個綠色的矩形。

cv2.rectangle(img,(384,0),(510,128),(0,255,0),3)

3.3 畫圓

想要畫一個圓,你需要確定它的圓心座標和半徑。我們在矩形中畫一個圓。

cv2.circle(img,(447,63),63,(0,0,255),-1)

3.4 畫橢圓

畫一個橢圓,我們需要輸入幾個參數。一個參數是橢圓中心座標(x,y)。下一個參數是長軸和短軸的長度。橢圓沿逆時針方向旋轉的角度。橢圓弧沿順時針方向起始的角度和結束角度。例如 值爲 0 和 360就是整個橢圓。如果想要了解更多,請查看 cv2.ellipse()的文檔。下面的例子在圖像的中心繪製了半個橢圓

img = cv2.ellipse(img,(256,256),(100,50),0,0,180,255,-1)

3.5 畫多邊形

畫一個多邊形,需要確定每個頂點的座標,用這些點的座標構建一個大小等於函數 Row x1x2的數組,行數就是點的數目。這個數組類型必須是int32.這裏畫一個黃色的具有四個頂點的多邊形。

pts = np.array([[20,5],[20,30],[70,20],[50,100]],np.int32) #首尾相連
pts = pts.reshape((-1,1,2))
img = cv2.polylines(img,[pts],True,(0,255,255))

注意

如果第三個參數是False ,我們得到的多邊形是不閉合的(首尾不相連)。

注意

cv2.polylines() 可以被用來畫很多條線。只要把想要畫的線放在一個列表中,將這個列表傳給函數就行了。每條線都會被獨立繪製,
這比用cv2.line()一條一條的繪製要快多了。

3.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,cv2.LINE_AA)

警告

所有的繪圖函數的返回值都是 None ,所以不能使用 img = cv2.line(img,(0,0),(511,511),(255,0,0),5)

結果

所以現在是時候看看我們畫的最終結果了。通過你前面學習到的知識把它顯示出來吧。

cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章