【翻譯:OpenCV-Python教程】OpenCV裏的畫圖方法

⚠️這個系列是自己瞎翻的,文法很醜,跳着跳着撿重要的部分翻,翻錯了不負責,就這樣。

⚠️基於3.4.3,Drawing Functions in OpenCV,原文

 

目標 

代碼 

在剛纔提到的所有方法裏,你會看到一些如下給出的公共的參數:

  • img : 你想要畫出圖形在哪個image上
  • color : 圖形的BGR顏色,用一個元組來傳這個參數,例如:(255,0,0)表示藍色。如果要灰度,則傳入一個量標。
  • thickness : 線或者圓的粗細,如果傳入對於一個封閉的輪廓,比如圓形,傳入**-1**那麼它會被填滿。默認的粗細爲1。
  • lineType : 線型,要麼是八連通的,要麼是抗鋸齒的。默認是八連通的。cv.LINE_AA 使得抗鋸齒線條看起來更有弧度。(譯者注:請大家自行百度關鍵詞8-connected / anti-aliased)

畫一條線

要畫出一條線,你需要傳入這條線的起止點座標。我們要先創建一個全黑的image,然後從左上角往右下角畫條藍色的線。

import numpy as np
import cv2 as cv
# Create a black image
img = np.zeros((512,512,3), np.uint8)
# Draw a diagonal blue line with thickness of 5 px
cv.line(img,(0,0),(511,511),(255,0,0),5)

畫矩形

要畫一個矩形,你需要左上角和右下角的點,這次我們要在右上角畫一個綠色的矩形。

 

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

畫圓圈

畫圓圈,你需要它的中點座標和半徑。我們要在剛纔畫好的矩形裏再畫一個圓。 

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

畫橢圓

要畫橢圓我們需要傳入好幾個參數。第一個參數是中點 (x,y)。接下來是主軸和次軸的軸長。參數angle則表示橢圓(主軸)逆時針方向轉動的角度。startAngle 和 endAngle 兩個參數指示出了從主軸開始以順時針方向衡量的起止弧度。比如,傳入0和360就會得到一個完整的橢圓。想要更多信息,查看 cv.ellipse() 方法的文檔如下示例在image正中間畫出一個半邊橢圓。

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

畫多邊形

要畫一個多邊形,首先你需要一堆頂點的座標。把這些點弄成一個ROWSx1x2的數組。ROWS表示頂點的數量,它得是一個int32型的整數。接下來咱們畫一個小的黃色四邊形。

pts = np.array([[10,5],[20,30],[70,20],[50,10]], np.int32)

pts = pts.reshape((-1,1,2))

cv.polylines(img,[pts],True,(0,255,255))

提示

如果第三參數爲False,你會得到一段穿過所有點的多段折線(polylines),而非一個封閉的圖形。

cv.polylines() 此方法可以被用於畫多段線。只要創建你想要畫線條的list丟進方法裏就可以了,在要畫一堆線條的時候,它比挨個調用 cv.line() 要快要好。

圖像上添加文字

想要在圖像上添加文字,你需要指定以下幾點:

  • 你要寫上的文本
  • 你要放置文本的位置座標 (比如,數據起於坐下角)
  • 字體 (查看 cv.putText() 文檔瞭解支持的字體)
  • 字體比例 (指定字體大小)
  • 通常的參數比如顏色,粗細,線型,等等。爲了更好看,推薦cv.LINE_AA

我們要在圖像上寫上白色的OpenCV。 

font = cv.FONT_HERSHEY_SIMPLEX

cv.putText(img,'OpenCV',(10,500), font, 4,(255,255,255),2,cv.LINE_AA)

結果

然後,是時候看看我們畫圖的最終結果啦。用你之前章節學到的,把圖形展示出來看看。

drawing_result.jpg

 

額外資源

  1. 在 ellipse 方法中用到的角度,不是我們常說的圓角度。詳情,看這個討論

練習 

  1. 試着用可用的畫圖方法把OpenCV的logo畫出來。

上篇:【翻譯:OpenCV-Python教程】視頻入門

下篇:【翻譯:OpenCV-Python教程】把鼠標當做一個畫筆

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章