opencv基础图形的绘制

举报
yd_274589494 发表于 2023/08/26 19:40:47 2023/08/26
【摘要】 @TOC 前言本篇文章来讲解使用opencv绘制基础图形。 一、直线绘制在使用OpenCV绘制直线、圆形和矩形时,可以使用不同的函数来实现。下面我将为您介绍如何使用OpenCV绘制直线、圆形和矩形。绘制直线:要在图像上绘制直线,可以使用line函数。基本语法如下:void line(InputOutputArray img, Point pt1, Point pt2, const Scala...

@TOC


前言

本篇文章来讲解使用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文件的读取。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。