首页 > 其他分享 >OpenCV绘图函数(15)图像上绘制矩形函数 rectangle()的使用

OpenCV绘图函数(15)图像上绘制矩形函数 rectangle()的使用

时间:2024-09-02 12:52:26浏览次数:12  
标签:15 函数 int OpenCV 参数 矩形 cv rectangle

  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

绘制一个简单的、粗的或填充的直立矩形。
这个函数 cv::rectangle 绘制一个矩形轮廓或一个填充的矩形,其两个相对的顶点分别是 pt1 和 pt2。

函数原型1

void cv::rectangle
(
	InputOutputArray 	img,
	Rect 	rec,
	const Scalar & 	color,
	int 	thickness = 1,
	int 	lineType = LINE_8,
	int 	shift = 0 
)		

参数1

  • 参数img 图像.
  • 参数pt1 矩形的一个顶点。
  • 参数pt2 与 pt1 相对的矩形的另一个顶点。
  • 参数color 矩形的颜色或亮度(灰度图像)。
  • 参数thickness 构成矩形的线条的厚度。负值,比如 FILLED,意味着函数需要绘制一个填充的矩形。
  • 参数lineType 线条的类型。参见 LineTypes
  • 参数shift 点坐标中的小数位数。

函数原型2

这是一个重载成员函数,为了方便而提供。它与上述函数的不同之处仅在于它接受的参数。

使用 rec 参数作为绘制矩形的另一种规格说明:r.tl() 和 r.br()-Point(1,1) 是相对的角落。

void cv::rectangle
(
	InputOutputArray 	img,
	Rect 	rec,
	const Scalar & 	color,
	int 	thickness = 1,
	int 	lineType = LINE_8,
	int 	shift = 0 
)		

代码示例


#include <opencv2/opencv.hpp>
#include <iostream>

int main(int argc, char** argv)
{
    // 加载一个图像文件,如果未提供,则使用默认的图像
    cv::Mat image = cv::imread("/media/dingxin/data/study/OpenCV/sources/images/qiu.jpg");
    
    if (image.empty())
    {
        std::cerr << "Error: Image cannot be loaded!" << std::endl;
        return -1;
    }

    // 创建一个窗口来显示图像
    cv::namedWindow("Image with Rectangle", cv::WINDOW_AUTOSIZE);

    // 定义矩形的两个对角点
    cv::Point pt1(50, 50);  // 矩形左上角坐标
    cv::Point pt2(200, 200);  // 矩形右下角坐标

    // 定义线条的颜色(BGR)和厚度
    cv::Scalar color(0, 0, 255);  // 红色
    int thickness = 2;  // 线条厚度

    // 使用 cv::rectangle 绘制矩形
    cv::rectangle(image, pt1, pt2, color, thickness);

    // 显示带有矩形的图像
    cv::imshow("Image with Rectangle", image);
    cv::waitKey(0);  // 等待按键按下

    return 0;
}

运行结果

在这里插入图片描述

标签:15,函数,int,OpenCV,参数,矩形,cv,rectangle
From: https://blog.csdn.net/jndingxin/article/details/141816945

相关文章

  • CMake构建学习笔记13-opencv库的构建
    OpenCV(OpenSourceComputerVisionLibrary)是一个开源的计算机视觉和机器学习软件库,旨在提供一个跨平台的、易于使用的、快速执行的计算机视觉接口。如果只是简单的使用,其实不必要像笔者这样使用源代码进行构建,直接使用官方提供的二进制安装包即可。一般来说,需要从源代码进行构建......
  • ReactJs:使用映射函数后我的父数组得到更新
    在React中,使用映射函数后父数组得到更新是正常的行为。映射函数会创建一个新的数组,其中包含了原始数组中每个元素经过映射操作后的结果。如果你希望在映射函数中修改原始数组,你可以使用forEach方法来遍历数组,并在遍历过程中修改元素。以下是一个示例:constparentArray=[1,2,......
  • 在多线程环境下,如何解决 Java 函数失效的问题?,java 多线程处理数据
    在多线程环境下,Ja函数失效的问题是开发者常常遇到的一个挑战。多线程带来了并发执行的优势,但同时也增加了代码的复杂性,尤其是在涉及共享资源时,如果处理不当,可能会导致函数失效,甚至引发更严重的问题。本文将探讨一些常见的Ja函数失效原因,并提供相应的解决方法。我们需要了解函数失......
  • 正确使用MySQL中的COUNT函数
    在MySQL中,COUNT函数用于计算表中的行数或满足特定条件的行数。以下是一些常见的用法:计算表中的总行数:SELECTCOUNT(*)FROMyour_table;计算满足特定条件的行数:SELECTCOUNT(column_name)FROMyour_tableWHEREcondition;与其他函数一起使用:COUNT函数可以与其他函数一起使用,......
  • 【全网独家】OpenCV: 缩写(uchar、ushort、Vec) 介绍与应用
    1.缩写介绍uchar定义:unsignedchar,即无符号字符类型。范围:0到255。应用:常用于存储灰度图像的像素值。ushort定义:unsignedshort,即无符号短整型。范围:0到65535。应用:在高动态范围(HDR)图像处理中使用较多,因为它能表示更宽的数值范围。Vec定义:OpenCV中的模板类,用于......
  • LIN总线CAPL函数—— 主节点波特率测试(ChkStart_LINMasterBaudrateViolation)
    ......
  • C语言函数递归(含扫雷进阶思路)
    文章目录一、什么是递归二、递归的使用思路和限制条件1.递归的使用思路2.递归的限制条件三、递归的举例举例1:求n的阶乘2.举例2:顺序打印⼀个整数的每⼀位四、递归与迭代对比五、递归与迭代对比举例七、扫雷进阶思路一、什么是递归  递归是学习C语⾔函数绕不开的......
  • 在对数坐标系中绘制函数图象
    本文记述了用Matplotlib在对数坐标系中绘制图象的一种方法,并在以2为底的对数坐标系上展示了选择排序、冒泡排序(二)、快速排序(四)的性能数据图象。笔者按如下布局绘制了12(4x3)幅图象,其中[a,b]代表某幅图象的位置。+---------------+---------------+---------------+|......
  • 15、java 面向对象之二:对象的创建和使用(对象内存解析和匿名对象)、再谈方法(方法的重
    java面向对象之二:Ⅰ、对象的创建和使用:1、对象的内存解析:其一、描述:其二、内存解析代码1为:其三、内存解析截图1为:其四、内存解析代码2为:其五、内存解析截图2为:2、匿名对象的使用:其一、描述:其二、代码为:其三、截图为:3、自定义数组的工具类:其一、描述:其二、代码为:A、Arr......
  • 制图工具(15)建筑物轮廓简化
    内容导读在地图综合和地理信息系统(GIS)中,建筑物多边形的轮廓数据是重要的空间信息之一,建筑物轮廓通常由任意折线构成,通常呈现出以下特点:直角特征弱:实际建筑物通常具有直角特征,但边界由任意折线构成,缺乏直角特征。点数冗余:为了精确描述边界,多边形顶点数目冗余,增加了数据处......