OpenCV(cv::circle())



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. 使用场景

  • 在计算机视觉任务中用于标记检测到的特征点或对象中心位置。
  • 用于在图像分析中可视化目标检测结果,例如目标检测算法中标记目标物体的位置。
  • 在图像上绘制标志性区域或参考点以进行进一步处理。


posted @ 2024-08-27 16:40  做梦当财神  阅读(429)  评论(0编辑  收藏  举报