一、學習目標
- 了解長軸和短軸參數
- 了解旋轉角度參數
- 了解起始角度參數
- 了解終止角度參數
二、深入了解OpenCV的ellipse方法
2.1 縱橫
橢圓的繪制方法在上一節中我們已經知道了是使用ellipse,ellipse的函數原型如下,為了清晰認識ellipse方法,在此使用了中文代替參數:
ellipse(image, 橢圓的中心坐標, 長軸和短軸, 旋轉角度, 起始角度, 終止角度, color ,粗細)
我們依舊沿用上一節的代碼,如下:
import cv2
import numpy as npimg=np.zeros((400,400,3), np.uint8)
cv2.ellipse(img, (200, 200), (170, 50), 0, 0, 360, (255, 255, 255), 3)cv2.imshow("Image", img)
cv2.waitKey (0)
cv2.destroyAllWindows()
我們的ellipse方法如下:
cv2.ellipse(img, (200, 200), (170, 50), 0, 0, 360, (255, 255, 255), 3)
其中(200, 200)為圓心坐標,(170, 50)為長短軸,0, 0為旋轉角度以及起始角度,360為終止角度。顏色和粗細分別為(255, 255, 255)以及3.我們我們先查看當前繪制出來的圖形是什么樣子的,結果如下:
那我們更改(170, 50)為(50, 170)呢?結果如下:
再次我們很清楚了(170, 50)中的170為橫向長度,50為縱向長度,我們還可以將170,50改成170,10,這個時候應該可以更明顯的看的出效果,應該170長度不變,10變得更扁了。結果如下:
我們更改170為100,應該它的橫向長度也會變短,將170的10改為70的10,結果如下:
cv2.ellipse(img, (200, 200), (70, 10), 0, 0, 360, (255, 255, 255), 3)
我們繼續按照以上代碼更改數據來深入的理解ellipse方法。這次我們更改選擇角度,代碼如下:
cv2.ellipse(img, (200, 200), (70, 10), 0, 0, 360, (255, 255, 255), 3)
旋轉角度
將第一個0,旋轉角度改為10,看看有什么效果:
cv2.ellipse(img, (200, 200), (70, 10), 10, 0, 360, (255, 255, 255), 3)
改為-10,結果如下:
這個時候可以得出,這個該旋轉角度如圖所示,是指在繪制這個圓的時候的選擇方向:
我們現在將繪制角度0改為180:
cv2.ellipse(img, (200, 200), (70, 10), 0, 180, 360, (255, 255, 255), 3)
得到的結果如下:
繪制角度
再將180改為90,結果如下:
這個時候得知,這個繪制角度是指原型在右下角與水平形成的角的起始繪制角度位置,如下圖所示:
起始繪制角度
這個時候就很清楚這個起始繪制角度的用法了。接下來我們查看終止角度的用法。我們將起始繪制角度置零,并且將終止角度改成180,代碼如下:
cv2.ellipse(img, (200, 200), (70, 10), 0, 0, 180, (255, 255, 255), 3)
結果如下:
這時再將該結束繪制角度更改為270,結果如下:
這個時候就很明白了,原型與水平線形成的平角開始,順時針繪制,繪制180則到180度位置停止繪制,繪制270則到270度開始停止,如下圖所示:
何繪制半個圓
那如何繪制半個圓呢?這個很簡單,只需要保持橫縱距離長短一致,并且繪制的角度為180即可:
cv2.ellipse(img, (200, 200), (70, 70), 0, 0, 180, (255, 255, 255), 1)
可是這個時候的半圓并不好看:
感覺只有一個弧,那怎么辦呢?很簡單,我們進行填充就可以了,如下:
cv2.ellipse(img, (200, 200), (70, 70), 0, 0, 180, (255, 255, 255), -1)
這個時候將線段的長度更改為負數就可以了,結果如下:
該系列首發于ebaina
三、總結
- 了解了長軸和短軸參數跟縱橫的關系
- 了解旋轉角度參數繪制圓形
- 了解起始角度參數繪制圓形
- 了解終止角度參數繪制圓形