opencv基础图形的绘制


前言

本篇文章来讲解使用opencv绘制基础图形。

一、直线绘制

在使用OpenCV绘制直线、圆形和矩形时,可以使用不同的函数来实现。下面我将为您介绍如何使用OpenCV绘制直线、圆形和矩形。

绘制直线:
要在图像上绘制直线,可以使用line函数。基本语法如下:

void line(InputOutputArray img, Point pt1, Point pt2, const Scalar& color, int thickness = 1, int lineType = LINE_8, int shift = 0);

img:表示输入图像。可以是一个Mat对象。
pt1:表示直线的起始点,可以通过Point(x, y)指定坐标。
pt2:表示直线的结束点,也可以通过Point(x, y)指定坐标。
color:表示绘制直线的颜色,可以是一个Scalar对象或者通过Scalar(B, G, R)指定颜色的BGR值。
thickness:表示直线的粗细,默认值为1。
lineType:表示直线的类型,有不同的线型可选,默认值为LINE_8。
shift:表示坐标点的小数位数。

下面是一个示例代码,演示如何绘制一条蓝色直线:

#include <opencv2/opencv.hpp>

using namespace cv;

int main()
{
    Mat image = Mat::zeros(Size(500, 500), CV_8UC3);

    Point pt1(100, 100);
    Point pt2(400, 400);

    Scalar color(255, 0, 0); // 蓝色

    line(image, pt1, pt2, color, 2);

    imshow("Image", image);
    waitKey(0);

    return 0;
}

运行效果:
在这里插入图片描述
我们首先创建一个空的图像 image,大小为500x500像素,并且使用CV_8UC3类型,表示每个像素有3个通道(BGR)。然后,我们定义起点 pt1 和终点 pt2,并指定要绘制的直线颜色为蓝色。最后,使用line函数在图像上绘制直线,并显示图像。

二、圆形绘制

绘制圆形:
要在图像上绘制圆形,可以使用circle函数。基本语法如下:

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

参数说明:

img:表示输入图像。可以是一个Mat对象。
center:表示圆心的坐标,可以通过Point(x, y)指定。
radius:表示圆的半径。
color:表示绘制圆的颜色,可以是一个Scalar对象或者通过Scalar(B, G, R)指定颜色的BGR值。
thickness:表示绘制圆的线宽,默认值为1。
lineType:表示线型,默认值为LINE_8。
shift:表示坐标点的小数位数。

下面是一个示例代码,演示如何在图像中绘制一个半径为100的红色实心圆:

#include <opencv2/opencv.hpp>

using namespace cv;

int main()
{
    Mat image = Mat::zeros(Size(500, 500), CV_8UC3);

    Point center(250, 250);
    int radius = 100;

    Scalar color(0, 0, 255); // 红色

    circle(image, center, radius, color, -1);

    imshow("Image", image);
    waitKey(0);

    return 0;
}

运行效果:
在这里插入图片描述
我们创建一个空的图像 image 并指定其大小。然后,我们定义圆心 center 和半径 radius,并将绘制圆的颜色设置为红色。最后,使用circle函数在图像上绘制实心圆,并显示图像。

三、矩形绘制

绘制矩形:
要在图像上绘制矩形,可以使用rectangle函数。基本语法如下:

void rectangle(InputOutputArray img, Point pt1, Point pt2, const Scalar& color, int thickness = 1, int lineType = LINE_8, int shift = 0);

参数说明:

img:表示输入图像。可以是一个Mat对象。
pt1:表示矩形的一个顶点,可以通过Point(x, y)指定。
pt2:表示矩形的对角顶点。
color:表示绘制矩形的颜色,可以是一个Scalar对象或者通过Scalar(B, G, R)指定颜色的BGR值。
thickness:表示矩形的线宽,默认值为1。
lineType:表示线型,默认值为LINE_8。
shift:表示坐标点的小数位数。

下面是一个示例代码,演示如何在图像中绘制一个蓝色矩形:

#include <opencv2/opencv.hpp>

using namespace cv;

int main()
{
    Mat image = Mat::zeros(Size(500, 500), CV_8UC3);

    Point pt1(100, 100);
    Point pt2(400, 400);

    Scalar color(255, 0, 0); // 蓝色

    rectangle(image, pt1, pt2, color, 2);

    imshow("Image", image);
    waitKey(0);

    return 0;
}

运行效果:
在这里插入图片描述

在上述示例中,我们创建一个空的图像 image 并指定其大小。然后,我们定义矩形的一对对角顶点 pt1 和 pt2,并将绘制矩形的颜色设置为蓝色。最后,使用rectangle函数在图像上绘制矩形,并显示图像。

总结

本篇文章就讲解到这里,下篇文章进行opencv摄像头和MP4文件的读取。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

花落已飘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值