• OpenCV 笔记(3):基本图形的绘制


    Part11.  绘制简单的图形

    绘图功能是 OpenCV 最基础的功能,OpenCV 提供了基础的绘制函数,用于帮助我们绘制一些基本的图形。通过这些函数的组合,我们也可以做一些高级的应用。

    11.1 绘制点和圆

    OpenCV 的绘制函数相对简单,而且很多参数很类似,所以介绍第一个函数时会详细地介绍各个参数的含义,后面就不做特别详细的介绍了。

    我们先来看点和圆的绘制:

    1. #include 
    2. #include 
    3. #include 
    4. using namespace std;
    5. using namespace cv;
    6. int main(int argc,char *argv[])
    7. {
    8.     Mat image = Mat::zeros(Size(800800), CV_8UC3);
    9.     image.setTo(255);// 设置屏幕为白色
    10.     Point p1(100100);
    11.     Point p2(200200);
    12.     Point p3(300300);
    13.     Point p4(400400);
    14.     Point p5(500500);
    15.     Point p6(600600);
    16.     Point p7(700700);
    17.     circle(image, p1, 4, Scalar(00255), -1);  // 画半径为4的圆(画点)
    18.     circle(image, p2, 60, Scalar(25500), 2);  // 画半径为60的圆
    19.     circle(image, p3, 60, Scalar(02550), -1);
    20.     circle(image, p4, 60, Scalar(2552550), 5);
    21.     circle(image, p5, 60, Scalar(2550255), -1);
    22.     circle(image, p6, 60, Scalar(0255255), 2);
    23.     circle(image, p7, 60, Scalar(000), -1);
    24.     imshow("src", image);
    25.     waitKey(0);
    26.     return 0;
    27. }
    a779d7e5bcfac88f5b5cc6ef079fb386.jpeg
    绘制点和圆.png

    我们主要使用 circle() 函数来绘制点和圆。

    1. CV_EXPORTS_W void circle(InputOutputArray img, Point center, int radius,
    2.                        const Scalar& color, int thickness = 1,
    3.                        int lineType = LINE_8, int shift = 0);

    其各个参数的含义:

    第一个参数 img:输入的源图像。 第二个参数 center:圆心的坐标。 第三个参数 radius:圆的半径。 第四个参数 color:圆形的颜色。 第五个参数 thickness:如果是正数,表示组成圆的线条的粗细程度。如果是负数,表示圆被填充。 第六个参数 lineType:线条的类型。OpenCV 提供了三种类型的线条,它们都是 LineTypes 枚举类型。

    • LINE_4 :4,表示四连接线。

    • LINE_8 :8,表示八连接线。

    • LINE_AA :16,表示抗锯齿线。使用它会产生更好的绘图质量,图像看起来会非常平滑,但是绘制速度较慢。

    第七个参数 shift:圆心坐标点和半径值的小数点位数。

    这里很多的参数,在本文后续的函数中都会用到。

    21.2 绘制直线

    直线跟圆的区别是,直线需要2个点来确定位置。下面是绘制直线的例子:

    1. #include 
    2. #include 
    3. #include 
    4. using namespace std;
    5. using namespace cv;
    6. int main(int argc,char *argv[])
    7. {
    8.     Mat image = Mat::zeros(Size(800800), CV_8UC3);
    9.     image.setTo(255);// 设置屏幕为白色
    10.     Point
  • 相关阅读:
    echarts图表区间展示
    图表开发工具LightningChart .NET v12.0正式发布——拥有新图表、新系列类型
    双指针例题
    计算机网络面经八股-什么是 SYN洪泛攻击?如何防范?
    nn.LayerNorm解释
    Spring的处理器映射器与适配器的架构设计
    【PostgreSQL内核学习(十八)—— (数据库表参数)】
    李宏毅机器学习第一课(结尾附作业模型详细分析)
    蓝桥杯中级题目之组合(c++)
    从0开始搭建ELK日志收集系统
  • 原文地址:https://blog.csdn.net/SLFq6OF5O7aH/article/details/134002044