首页 > 编程笔记 > C++笔记 阅读:2

OpenCV circle()函数的用法(附带实例)

全局函数 circle() 用来绘制或填充一个给定圆心和半径的圆,该函数声明如下:
void cv::circle (InputOutputArray img, Point center,int radius,const Scalar &  color, int thickness = 1, int  lineType = LINE_8, int shift = 0);
各个参数的含义如下:
下面来看一个示例,绘制奥迪车标。我们知道奥迪车标是 4 个圆圈,所以使用 circle() 函数来实现:
1) 打开 Qt Creator,新建一个控制台工程,工程名是 test。

2) 在 IDE 中打开 main.cpp,输入如下代码:
#include <iostream>
#include <opencv2/imgproc/types_c.h>   // for CV_RGB2GRAY
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>

using namespace std;
using namespace cv;

int main(int argc, char** argv)
{
    /* 生成一个 500×850 的 Mat 矩阵,8 位 3 通道(CV_8UC3) */
    Mat image2 = Mat::zeros(500, 850, CV_8UC3);

    /* 演示:画一个实心圆(半径 63,圆心 (447,63),红色) */
    circle(image2, Point(447, 63), 63, Scalar(0, 0, 255), -1);

    /*========== 开始绘制奥迪车标 ==========*/
    /* 绘制第一个圆:半径 100,圆心 (200,300),紫色,线宽 7 */
    circle(image2, Point(200, 300), 100, Scalar(225, 0, 225), 7, 8);

    /* 绘制第二个圆:半径 100,圆心 (350,300),线宽 7 */
    circle(image2, Point(350, 300), 100, Scalar(225, 0, 225), 7, 8);

    /* 绘制第三个圆:半径 100,圆心 (500,300) */
    circle(image2, Point(500, 300), 100, Scalar(225, 0, 225), 7, 8);

    /* 绘制第四个圆:半径 100,圆心 (650,300) */
    circle(image2, Point(650, 300), 100, Scalar(225, 0, 225), 7, 8);

    /* 显示窗口 */
    imshow("Audi logo", image2);
    waitKey();
    return 0;
}
在上述代码中,我们先演示画了一个实心圆圈,它和奥迪车标无关。然后开始画 4 个空心圆圈作为奥迪车标,只需计算好它们之间的距离即可。

3) 保存工程并运行,结果如下图所示:

相关文章