opencv学习笔记7-opencv绘制矩形并使用窗口显示
·
一、函数原型:
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;
}
七、运行结果:

更多推荐



所有评论(0)