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_4LINE_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;
}

七、运行结果:

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值