目錄
- 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)
引數:
-
img
(InputOutputArray):- 輸入/輸出影像。在此影像上繪製圓形。
- 影像可以是灰度影像或彩色影像。
-
center
(Point):- 圓心的座標,用
cv::Point(x, y)
表示。x
和y
是圓心的畫素座標。
- 圓心的座標,用
-
radius
(int):- 圓的半徑,以畫素為單位。
-
color
(Scalar):- 圓的顏色。
- 對於彩色影像,顏色透過
cv::Scalar(blue, green, red)
定義,注意順序為 BGR。 - 對於灰度影像,顏色為單個強度值,如
cv::Scalar(255)
表示白色。
-
thickness
(int, 預設值 = 1):- 圓的邊界厚度。
- 如果
thickness
為正數,則表示邊界線的厚度。 - 如果
thickness = FILLED (-1)
,圓將被填充。
-
lineType
(int, 預設值 = LINE_8):- 線條的型別,可以是以下選項之一:
LINE_8
:8-connected 線條 (預設值)。LINE_4
:4-connected 線條。LINE_AA
:抗鋸齒線條(更平滑的圓)。
- 線條的型別,可以是以下選項之一:
-
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. 說明
- 抗鋸齒圓:透過設定
lineType
為LINE_AA
,可以使圓的邊緣更加平滑。這在繪製較大或較小的圓時非常有用。 - 座標精度:如果你需要繪製亞畫素級別的圓形,可以調整
shift
引數。例如,如果shift = 1
,則center.x = 2
實際表示1.0
畫素。
4. 使用場景
- 在計算機視覺任務中用於標記檢測到的特徵點或物件中心位置。
- 用於在影像分析中視覺化目標檢測結果,例如目標檢測演算法中標記目標物體的位置。
- 在影像上繪製標誌性區域或參考點以進行進一步處理。