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