cv2.ellipse的使用

一、基礎概念

cv2.ellipse是OpenCV中一個非常常用的函數,它可以用來在圖像上繪製橢圓。該函數的基本用法如下:

cv2.ellipse(img, center, axes, angle, startAngle, endAngle, color[, thickness[, lineType[, shift]]])

參數含義如下:

  • img:要繪製橢圓的圖像
  • center:橢圓中心的坐標
  • axes:橢圓半長軸和半短軸的長度
  • angle:橢圓旋轉角度
  • startAngle:橢圓起始角度(順時針方向,以x軸正半軸為起點)
  • endAngle:橢圓終止角度(順時針方向,以x軸正半軸為起點)
  • color:橢圓的顏色,以BGR格式表示
  • thickness:橢圓邊框的粗細,如果為負數,則表示填充橢圓的顏色
  • lineType:橢圓邊框的線型,可以為cv2.LINE_AA等
  • shift:坐標點小數點位數

二、參數解釋

1. center參數

以坐標系的原點為中心,有一個長度為100的x軸和長度為50的y軸,我們畫出它們的交點(即坐標系原點),然後在該點畫出一個填充紅色的橢圓:

import numpy as np
import cv2

# 創建黑色背景
img = np.zeros((512,512,3), np.uint8)

# 繪製坐標系
cv2.line(img, (0,256), (512,256), (255,255,255), 1)
cv2.line(img, (256,0), (256,512), (255,255,255), 1)

# 繪製橢圓
color = (0, 0, 255)
center = (256, 256)
axes = (100, 50)
angle = 0
startAngle = 0
endAngle = 360

cv2.ellipse(img, center, axes, angle, startAngle, endAngle, color, -1)

# 顯示圖片
cv2.imshow("img", img)
cv2.waitKey()
cv2.destroyAllWindows()

運行該代碼,即可得到以下結果:

2. axes參數

在上一個例子中,我們使用了axes參數來調整橢圓長軸和短軸的長度。如果將axes設置為(50,100),則橢圓的形狀就會變成橫向拉伸了:

...
# 繪製橢圓
color = (0, 0, 255)
center = (256, 256)
axes = (50, 100) # 此處修改為(50, 100)
angle = 0
startAngle = 0
endAngle = 360

cv2.ellipse(img, center, axes, angle, startAngle, endAngle, color, -1)
...

得到的結果如下:

3. angle參數

在上一個例子中,我們使用了angle參數來調整橢圓的旋轉角度。如果將angle設置為45,則橢圓會向左上角旋轉45度:

...
# 繪製橢圓
color = (0, 0, 255)
center = (256, 256)
axes = (50, 100)
angle = 45 # 此處修改為45
startAngle = 0
endAngle = 360

cv2.ellipse(img, center, axes, angle, startAngle, endAngle, color, -1)
...

得到的結果如下:

4. startAngle和endAngle參數

在上一個例子中,我們使用了startAngle和endAngle參數來調整橢圓的起始角度和終止角度。如果將startAngle設置為45,endAngle設置為135,則繪製出的橢圓就會只有上方一半,而下方被裁去:

...
# 繪製橢圓
color = (0, 0, 255)
center = (256, 256)
axes = (50, 100)
angle = 45
startAngle = 45 # 此處修改為45
endAngle = 135 # 此處修改為135

cv2.ellipse(img, center, axes, angle, startAngle, endAngle, color, -1)
...

得到的結果如下:

三、附加特性

1. thickness參數

從上面的四個例子中可以看出,thickness參數控制了橢圓的邊框粗細和是否填充。如果thickness為正數,則表示繪製邊框,並且borderWidth表示邊框寬度;如果thickness為負數,則表示填充橢圓,並且thickness的絕對值表示填充顏色的透明度。下面是一個填充顏色的例子:

...
# 繪製橢圓
color = (0, 0, 255)
center = (256, 256)
axes = (100, 50)
angle = 0
startAngle = 0
endAngle = 360

cv2.ellipse(img, center, axes, angle, startAngle, endAngle, color, -1) # 修改thickness為-1,填充橢圓

# 顯示圖片
cv2.imshow("img", img)
cv2.waitKey()
cv2.destroyAllWindows()

得到的結果如下:

2. lineType參數

lineType參數可以控制邊框的線型,常見的線型有cv2.LINE_AA、cv2.LINE_4和cv2.LINE_8等。例如,將lineType設置為cv2.LINE_AA,則邊框會更加平滑:

...
# 繪製橢圓
color = (0, 0, 255)
center = (256, 256)
axes = (100, 50)
angle = 0
startAngle = 0
endAngle = 360

cv2.ellipse(img, center, axes, angle, startAngle, endAngle, color, 2, cv2.LINE_AA) # 修改thickness為2,線型為cv2.LINE_AA

# 顯示圖片
cv2.imshow("img", img)
cv2.waitKey()
cv2.destroyAllWindows()

得到的結果如下:

四、總結

通過本文的介紹,我們了解了cv2.ellipse的基本用法和參數含義,並且介紹了一些可選參數。cv2.ellipse是OpenCV中非常常用的函數,對於繪製橢圓形的圖形處理來說,非常有效。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/295495.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-27 12:56
下一篇 2024-12-27 12:56

相關推薦

  • 詳解ellipse函數

    一、Ellipse函數 Ellipse函數是在一個矩形區域內繪製一個圓或橢圓的函數。該函數有5個參數,分別是橢圓在矩形中的位置坐標和寬、高兩個軸的長度。其中矩形的位置坐標為(x,y…

    編程 2024-11-16

發表回復

登錄後才能評論