一、函数原型:
CV_EXPORTS_W void rectangle(InputOutputArray img, Point pt1, Point pt2,
const Scalar& color, int thickness = 1,
int lineType = LINE_8, int shift = 0);
二、函数作用:
rectangle
函数在图像上绘制一个简单的矩形,可以是矩形轮廓、粗轮廓或填充矩形。
三、参数:
InputOutputArray img
:要在其上绘制矩形的图像,可以是cv::Mat
类型,支持输入输出。Point pt1
:矩形的一个顶点坐标。Point pt2
:矩形与pt1
对角的另一个顶点坐标。const Scalar& color
:矩形的颜色或在灰度图像中的亮度值,使用 OpenCV 的Scalar
类型定义。int thickness
:构成矩形的线条的粗细。负值表示绘制一个填充矩形,例如#FILLED
。int lineType
:线条类型,定义了线条的绘制方式,如LINE_4
、LINE_8
或LINE_AA
(抗锯齿线),默认值为LINE_8
。int shift
:点坐标中小数位数的数量,用于指定坐标点的小数位数,通常用于子像素精度的绘制。
四、功能说明:
- 该函数可以绘制矩形的轮廓或填充整个矩形区域。
- 矩形的位置和大小由
pt1
和pt2
确定,这两个点是矩形的两个对角顶点。 - 线条的粗细和样式可以通过
thickness
和lineType
参数控制。 - 如果
thickness
为负值,将绘制一个填充的矩形。
五、应用场景:
rectangle
函数常用于图像处理和计算机视觉中的基本绘图操作,如在图像上标记区域、创建图形界面元素或进行视觉分析。
六、代码示例:
#include <opencv2/core/utils/logger.hpp>
#include <opencv2/opencv.hpp>
#include <opencv2/videoio.hpp>
#include <opencv2/objdetect.hpp>
#include <opencv2/highgui/highgui_c.h>
#include <iostream>
using namespace cv;
using namespace std;
//7-绘制矩形图片
int main()
{
utils::logging::setLogLevel(utils::logging::LOG_LEVEL_SILENT);
Mat src = Mat::zeros(500, 500, CV_8UC3);
//方法一:
// 红色 ,宽度为3,4近邻居连接
rectangle(src, Point(200, 50), Point(300, 150), Scalar(0, 0, 200), 3, 4);
// 绿色,宽度为5,8近邻居连接
rectangle(src, Point(200, 200), Point(300, 300), Scalar(0, 200, 0), 5, 8);
//方法二:
//模板类Rect,用于创建和操作矩形区域。
//x:矩形左上角的 x 坐标。
//y:矩形左上角的 y 坐标。
//width:矩形的宽度。
//height:矩形的高度
Rect rect;
rect.x = 200;
rect.y = 350;
rect.width = 50;
rect.height = 100;
//antialiased line
rectangle(src, rect,Scalar(200, 0, 0),-1, LINE_AA);//在宏定义中LINE_AA=16
namedWindow("image", CV_WINDOW_AUTOSIZE | CV_WINDOW_FREERATIO);
imshow("image", src);
waitKey(5000);//显示五秒后关闭
destroyAllWindows();//关闭所有窗口
return 0;
}