OpenCV(cv::circle())

做梦当财神發表於2024-08-27

目錄
  • 1. 函式
  • 2. 示例
  • 3. 說明
  • 4. 使用場景



cv::circle() 是 OpenCV 提供的一個函式,用於在影像上繪製圓形。它非常適用於在影像處理任務中標記特定的點或區域。這個函式具有多種引數,允許你根據需要控制圓的顏色、位置、半徑和邊界厚度。

1. 函式

void cv::circle(InputOutputArray img, Point center, int radius, const Scalar& color, int thickness = 1, int lineType = LINE_8, int shift = 0)

引數:

  1. img (InputOutputArray):

    • 輸入/輸出影像。在此影像上繪製圓形。
    • 影像可以是灰度影像或彩色影像。
  2. center (Point):

    • 圓心的座標,用 cv::Point(x, y) 表示。xy 是圓心的畫素座標。
  3. radius (int):

    • 圓的半徑,以畫素為單位。
  4. color (Scalar):

    • 圓的顏色。
    • 對於彩色影像,顏色透過 cv::Scalar(blue, green, red) 定義,注意順序為 BGR。
    • 對於灰度影像,顏色為單個強度值,如 cv::Scalar(255) 表示白色。
  5. thickness (int, 預設值 = 1):

    • 圓的邊界厚度。
    • 如果 thickness 為正數,則表示邊界線的厚度。
    • 如果 thickness = FILLED (-1),圓將被填充。
  6. lineType (int, 預設值 = LINE_8):

    • 線條的型別,可以是以下選項之一:
      • LINE_8:8-connected 線條 (預設值)。
      • LINE_4:4-connected 線條。
      • LINE_AA:抗鋸齒線條(更平滑的圓)。
  7. shift (int, 預設值 = 0):

    • 圓心座標和半徑的小數位精度(位移)。預設值 0 表示整數精度。


2. 示例

以下是一個簡單的使用 cv::circle() 函式繪製圓的例子:

#include <opencv2/opencv.hpp>

int main() {
    // 建立一個黑色影像
    cv::Mat img = cv::Mat::zeros(400, 400, CV_8UC3);

    // 定義圓心座標
    cv::Point center(200, 200);

    // 半徑
    int radius = 50;

    // 顏色(藍色 BGR:255, 0, 0)
    cv::Scalar color(255, 0, 0);

    // 繪製圓
    cv::circle(img, center, radius, color, 2);

    // 顯示影像
    cv::imshow("Circle", img);
    cv::waitKey(0);

    return 0;
}


3. 說明

  • 抗鋸齒圓:透過設定 lineTypeLINE_AA,可以使圓的邊緣更加平滑。這在繪製較大或較小的圓時非常有用。
  • 座標精度:如果你需要繪製亞畫素級別的圓形,可以調整 shift 引數。例如,如果 shift = 1,則 center.x = 2 實際表示 1.0 畫素。


4. 使用場景

  • 在計算機視覺任務中用於標記檢測到的特徵點或物件中心位置。
  • 用於在影像分析中視覺化目標檢測結果,例如目標檢測演算法中標記目標物體的位置。
  • 在影像上繪製標誌性區域或參考點以進行進一步處理。


相關文章