OpenCV 4.12.0
開源計算機視覺
載入中...
搜尋中...
無匹配項
基本繪圖

下一教程: OpenCV 隨機生成器和文字

原始作者Ana Huamán
相容性OpenCV >= 3.0

目標

在本教程中,您將學習如何

  • 使用 OpenCV 函式 line() 繪製一條直線
  • 使用 OpenCV 函式 ellipse() 繪製一個橢圓
  • 使用 OpenCV 函式 rectangle() 繪製一個矩形
  • 使用 OpenCV 函式 circle() 繪製一個圓形
  • 使用 OpenCV 函式 fillPoly() 繪製一個填充多邊形

OpenCV 理論

Point(點)

它表示一個 2D 點,由其影像座標 \(x\) 和 \(y\) 指定。我們可以將其定義為

Scalar(標量)

  • 表示一個 4 元素向量。Scalar 型別在 OpenCV 中廣泛用於傳遞畫素值。
  • 在本教程中,我們將大量使用它來表示 BGR 顏色值(3 個引數)。如果不需要使用最後一個引數,則無需定義它。
  • 我們來看一個例子,如果要求提供顏色引數,我們給出 我們將定義一個 BGR 顏色,例如:藍色 = a綠色 = b紅色 = c

程式碼

解釋

由於我們計劃繪製兩個示例(一個原子和一個城堡棋子),因此我們必須建立兩個影像和兩個視窗來顯示它們。

我們建立了函式來繪製不同的幾何形狀。例如,為了繪製原子,我們使用了 MyEllipseMyFilledCircle

為了繪製城堡棋子,我們使用了 MyLinerectangleMyPolygon

我們來看看這些函式內部有什麼

MyLine

  • 正如我們所見,MyLine 僅僅呼叫了 line() 函式,其作用如下:
    • 從點 start 到點 end 繪製一條直線
    • 線條顯示在影像 img
    • 線條顏色由 ( 0, 0, 0 ) 定義,這是對應於黑色的 RGB 值
    • 線條粗細設定為 thickness(本例中為 2)
    • 線條是 8-連線的(lineType = 8)

MyEllipse

  • 從上面的程式碼中,我們可以看出函式 ellipse() 繪製了一個橢圓,其特點是
    • 橢圓顯示在影像 img
    • 橢圓中心位於點 (w/2, w/2),幷包含在大小為 (w/4, w/16) 的框中
    • 橢圓旋轉了 angle
    • 橢圓的弧度從 0 延伸到 360
    • 圖形顏色為 ( 255, 0, 0 ),這意味著 BGR 值為藍色。
    • 橢圓的粗細為 2。

MyFilledCircle

  • 與橢圓函式類似,我們可以看到 circle 接收以下引數:
    • 將顯示圓形的影像 (img)
    • 圓心,表示為點 center
    • 圓的半徑:w/32
    • 圓的顏色:( 0, 0, 255 ),在 BGR 中表示 紅色
    • 由於 thickness = -1,因此圓形將被填充。

MyPolygon

  • 要繪製填充多邊形,我們使用函式 fillPoly()。我們注意到:
    • 多邊形將繪製在 img
    • 多邊形的頂點是 ppt 中的點集
    • 多邊形顏色由 ( 255, 255, 255 ) 定義,這是白色的 BGR 值

rectangle

  • 最後是 cv::rectangle 函式(我們沒有為它建立特殊的函式)。我們注意到:
    • 矩形將繪製在 rook_image
    • 矩形的兩個相對頂點由 ( 0, 7*w/8 )( w, w ) 定義
    • 矩形顏色由 ( 0, 255, 255 ) 給出,這是黃色的 BGR 值
    • 由於粗細值由 FILLED (-1) 給出,矩形將被填充。

結果

編譯並執行您的程式應得到如下結果: