当前位置: 首页 > news >正文

Opencv绘图之rectangle、circle、line、ellipse、Rect、RotatedRect、Point

OpenCV中提供了多种函数来在图像上绘制各种基本形状,如矩形、圆形、线条、椭圆等。同时,RectRotatedRect是用来表示矩形区域的类,它们在图像处理中非常有用,尤其是在需要定义和操作图像区域时。Point类用于表示二维空间中的一个点。这个类在处理图像或绘图时非常有用,比如标定图像中的位置、定义形状的顶点等。

1.Point类

Point类有几个不同的变体,其中Point_<T>是一个模板类,它允许你使用任何数值类型(如intfloatdouble等)来表示点的坐标。最常用的变体是Point(等同于Point_<int>,用整数坐标表示)和Point2f(等同于Point_<float>,用浮点数坐标表示)。

// 使用整数坐标定义一个点
Point pt1(10, 20);// 使用浮点数坐标定义一个点
Point2f pt2(10.5f, 20.5f);

点的加减

可以将两个点相加或相减,得到一个新的点。

Point pt3 = pt1 + Point(5, 5); // 将pt1向右下方移动5个单位
Point pt4 = pt1 - Point(5, 5); // 将pt1向左上方移动5个单位

与标量的运算

Point pt5 = pt1 * 2;  // 将pt1的坐标值放大2倍
Point pt6 = pt1 / 2;  // 将pt1的坐标值缩小2倍

应用

在图像处理和计算机视觉中,Point类经常与其他OpenCV函数一起使用,比如在图像上绘制图形、标定特定区域、计算形状的几何属性等。

// 创建一个空白图像
Mat image = Mat::zeros(Size(400, 400), CV_8UC3);// 在图像上绘制一个圆,使用Point类指定圆心位置
circle(image, Point(200, 200), 50, Scalar(255, 0, 0), -1);// 显示图像
imshow("Circle", image);
waitKey(0);

2.Rect类

用于表示图像中的矩形区域。

Rect(int x, int y, int width, int height);
  • x, y:矩形左上角的坐标。
  • width, height:矩形的宽度和高度。

3.RotatedRect类

用于表示旋转的矩形。

RotatedRect(const Point2f& center, const Size2f& size, float angle);
  • center:旋转矩形的中心点。
  • size:矩形的尺寸(宽度和高度)。
  • angle:矩形相对于水平轴的旋转角度。

4. 绘制矩形:rectangle

void rectangle(Mat& img, Point pt1, Point pt2, const Scalar& color, int thickness = 1, int lineType = LINE_8, int shift = 0);
  • img:目标图像。
  • pt1:矩形的一个顶点。
  • pt2:矩形对角线上的另一个顶点。
  • color:矩形颜色。
  • thickness:边框的厚度。负值(如FILLED)表示填充矩形。
  • lineType:线条的类型,如LINE_8(8-connected line)。

5.绘制圆形:circle

void circle(Mat& img, Point center, int radius, const Scalar& color, int thickness = 1, int lineType = LINE_8, int shift = 0);
  • img:目标图像。
  • center:圆心坐标。
  • radius:圆的半径。
  • color:圆的颜色。

6.绘制线条:line

void line(Mat& img, Point pt1, Point pt2, const Scalar& color, int thickness = 1, int lineType = LINE_8, int shift = 0);
  • img:目标图像。
  • pt1, pt2:线条的起点和终点。
  • color:线条的颜色。

7.绘制椭圆:ellipse

void ellipse(Mat& img, Point center, Size axes, double angle, double startAngle, double endAngle, const Scalar& color, int thickness = 1, int lineType = LINE_8, int shift = 0);
  • img:目标图像。
  • center:椭圆的中心点。
  • axes:椭圆的主轴和次轴长度。
  • angle:椭圆的旋转角度。
  • startAngle,endAngle:椭圆弧的起始和结束角度。

8.小例子

8//图像几何图像绘制
void QuickDemo::draw_demo(Mat &image) {Rect rect;rect.x = 100;rect.y = 100;rect.width = 150;rect.height = 200;Mat bg = Mat::zeros(image.size(), image.type());rectangle(bg, rect, Scalar(0, 0, 255), 5, 8, 0);circle(bg, Point(250, 300), 15, Scalar(255, 0, 0), 5, 8, 0);line(bg, Point(100, 100), Point(250, 300), Scalar(0, 255, 0), 5, 8, 0);RotatedRect rrt;rrt.center = Point(180, 190);rrt.size = Size(50, 100);rrt.angle = 90.0;ellipse(bg, rrt, Scalar(0, 255, 255), -1, 8);Mat dst;addWeighted(image, 0.3, bg, 0.7, 0, dst);imshow("bg", bg);imshow("dst", dst);
}

在这里插入图片描述

相关文章:

Opencv绘图之rectangle、circle、line、ellipse、Rect、RotatedRect、Point

OpenCV中提供了多种函数来在图像上绘制各种基本形状&#xff0c;如矩形、圆形、线条、椭圆等。同时&#xff0c;Rect和RotatedRect是用来表示矩形区域的类&#xff0c;它们在图像处理中非常有用&#xff0c;尤其是在需要定义和操作图像区域时。Point类用于表示二维空间中的一个…...

HTML 字符实体参考清单

前言 一些字符在 HTML 中是预留的&#xff0c;拥有特殊的含义&#xff0c;比如小于号‘<’用于定义 HTML 标签的开始。如果我们希望浏览器正确地显示这些字符&#xff0c;我们必须在 HTML 源码中插入字符实体。 字符实体有三部分&#xff1a;一个和号‘&’和一个实体名…...

设计模式二:代理模式

1、什么是动态代理 可能很多小伙伴首次接触动态代理这个名词的时候&#xff0c;或者是在面试过程中被问到动态代理的时候&#xff0c;不能很好的描述出来&#xff0c;动态代理到底是个什么高大上的技术。不方&#xff0c;其实动态代理的使用非常广泛&#xff0c;例如我们平常使…...

php使用get_browser()函数将移动端和pc端分开

首先&#xff0c;确保你的PHP版本支持get_browser函数。get_browser函数是PHP内置的函数&#xff0c;但需要配置php.ini文件中的browscap参数&#xff0c;指定一个浏览器配置文件。 下载浏览器配置文件。你可以从 https://download.csdn.net/download/bigorange1/88850695 下…...

更改WordPress作者存档链接author和Slug插件Edit Author Slug

WordPress默认所有用户的存档永久链接都是/author/username/&#xff0c;不管是管理员还是订阅者或贡献者或作者或编辑。如果你想要自定义用户存档链接&#xff0c;比如根据角色不同使用不一样的author&#xff0c;或者自定义作者链接中的用户名Slug&#xff0c;那么建议考虑使…...

RISCV——Spinlock锁的理解

目录 1. 原子操作 2. 锁是干嘛的 3. 锁的实现 1. 原子操作 gcc从4.1.2开始提供了__sync_*系列的build-in函数&#xff0c;用于提供加减和逻辑运算的原子操作&#xff0c;主要接口的其声明如下&#xff1a; type __sync_fetch_and_add (type *ptr, type value, ...): 将valu…...

阿里云幻兽帕鲁Windows 服务器怎么下载存档?

阿里云幻兽帕鲁Windows 服务器怎么下载存档&#xff1f;通过远程连接window服务器桌面的方式。 远程连接到阿里云的 Windows 服务器后&#xff0c;可以将压缩后的存档文件&#xff0c;拖动到 workbench\Download 目录后&#xff0c;就会触发浏览器的文件下载&#xff0c;然后将…...

ArcGIS API for JavaScript 4.X 本地部署(js,字体)

0 目录&#xff08;4.19&#xff09; /4.19/ 1 修改文件 1.1 init.js 编辑器打开/4.19/init.js搜索文本[HOSTNAME_AND_PATH_TO_JSAPI]&#xff0c;然后将其连同前面的https://替换为http://ip地址/4.19&#xff0c;可以是localhost&#xff0c;只能本机引用 替换后&#xff…...

202427读书笔记|《猫的自信:治愈系生活哲学绘本》——吸猫指南书,感受猫咪的柔软慵懒与治愈

202427读书笔记|《猫的自信&#xff1a;治愈系生活哲学绘本》——吸猫指南书&#xff0c;感受猫咪的柔软慵懒与治愈 《猫的自信&#xff1a;治愈系生活哲学绘本》作者林行瑞&#xff0c;治愈系小漫画绘本&#xff0c;10分钟可以读完的一本书&#xff0c;线条明媚&#xff0c;自…...

数据结构链表力扣例题AC(2)——代码以及思路记录

206. 反转链表 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 AC方法1 struct ListNode* reverseList(struct ListNode* head) {if(head NULL)return NULL;struct ListNode* n1, *n2, *n3;n1 NULL;n2 head;n3 head->next;while…...

C++面试宝典第30题:分发饼干

题目 假设你是一位非常棒的家长,想要给你的孩子们分发一些小饼干。但是,每个孩子最多只能给一块饼干。对每一个孩子i,都有一个胃口值gi,这是能让孩子们满足胃口的饼干的最小尺寸。对每一块饼干j,都有一个尺寸sj。如果sj >= gi,我们就可以将这个饼干j分配给孩子i,这个…...

文件包含+文件上传漏洞(图片马绕过)

目录 一.文件包含二.文件上传三.图片马四.题目 一.文件包含 将已有的代码以文件形式包含到某个指定的代码中&#xff0c;从而使用其中的代码或者数据&#xff0c;一般是为了方便直接调用所需文件&#xff0c;文件包含的存在使得开发变得更加灵活和方便&#xff08;若对用户输入…...

华为配置旁挂二层组网隧道转发示例

配置旁挂二层组网隧道转发示例 组网图形 业务需求组网需求数据规划配置思路配置注意事项操作步骤配置文件扩展阅读 业务需求 企业用户通过WLAN接入网络&#xff0c;以满足移动办公的最基本需求。且在覆盖区域内移动发生漫游时&#xff0c;不影响用户的业务使用。 组网需求 AC组…...

Postgresql源码(123)事务提交时三段资源释放分析ResourceOwnerRelease

0 总结 三段释放原因&#xff1a;因为如果先释放锁&#xff0c;没有释放一些共享资源&#xff08;比如pin住的buffer&#xff09;&#xff0c;别人拿到锁后发现我们仍然持有一些资源&#xff0c;就会有问题。所以三阶段释放主要是以锁为分界线&#xff0c;先释放锁保护的资源&…...

电脑文件误删除如何恢复?2024最新三种恢复方法

我们在使用电脑的过程中&#xff0c;随着时间的不断推移&#xff0c;渐渐的我们会发现C盘内存空间不足了。这是因为我们很多文件都默认存储在C盘&#xff0c;所以导致C盘空间不足&#xff0c;电脑运行越来越慢。那么电脑哪些文件可以删除&#xff0c;电脑删除的东西怎么恢复&am…...

Netty应用——Google Protobuf强化篇(二十)

Protobuf发送一种实例 客户端可以发送一个 Student PoJo 对象到服务器 (通过 Protobuf 编码)服务端能接收 Student PoJo 对象&#xff0c;并显示信息(通过 Protobuf 解码) Student.proto syntax "proto3"; //版本 option java_outer_classname "StudentPOJO&…...

SpringAMQP开启“可靠性”机制

前言 上一篇介绍了如何在 《SpringBoot 中集成和使用消息队列》&#xff0c;看过这一篇就基本上可以在SpringBoot中使用消息队列了&#xff0c;但是消息队列他归根结底是一个客户端服务器模式的中间件&#xff0c;面对复杂的网络环境和分布式使用环境&#xff0c;难免会出现各…...

戴尔Dell R740服务器开机冒烟亮黄灯故障维修

今天分享的是一台过保修期的DELL PowerEdge R740服务器开机冒烟的维修案例。先上图&#xff1a; 接到用户报修后工程师立即响应&#xff0c;由于用户也是刚开工第一天服务器开机就出现了这种祥龙吐雾的祥兆&#xff0c;导致工厂业务流程无法正常使用&#xff0c;这台机器在东莞…...

【阅读笔记】空域保边降噪《Side Window Filtering》

1、保边滤波背景 保边滤波器的代表包括双边滤波、引导滤波&#xff0c;但是这类滤波器有一个问题&#xff0c;它们均将待处理的像素点放在了方形滤波窗口的中心。但如果待处理的像素位于图像纹理或者边缘&#xff0c;方形滤波核卷积的处理结果会导致这个边缘变模糊。 基于这个…...

vue3前端excel导出;组件表格,自定义表格导出;Vue3 + xlsx + xlsx-style

当画面有自定义的表格或者样式过于复杂的表格时&#xff0c;导出功能可以由前端实现 1. 使用的插件 &#xff1a; sheet.js-xlsx 文档地址&#xff1a;https://docs.sheetjs.com/ 中文地址&#xff1a;https://geekdaxue.co/read/SheetJS-docs-zh/README.md xlsx-style&#…...

后进先出(LIFO)详解

LIFO 是 Last In, First Out 的缩写&#xff0c;中文译为后进先出。这是一种数据结构的工作原则&#xff0c;类似于一摞盘子或一叠书本&#xff1a; 最后放进去的元素最先出来 -想象往筒状容器里放盘子&#xff1a; &#xff08;1&#xff09;你放进的最后一个盘子&#xff08…...

生成xcframework

打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式&#xff0c;可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求&#xff0c;由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面&#xff1a; &#x1f3db;️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限&#xff0c;形成层级清晰的管理网络&#xf…...

【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】

1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件&#xff08;System Property Definition File&#xff09;&#xff0c;用于声明和管理 Bluetooth 模块相…...

Spring AI 入门:Java 开发者的生成式 AI 实践之路

一、Spring AI 简介 在人工智能技术快速迭代的今天&#xff0c;Spring AI 作为 Spring 生态系统的新生力量&#xff0c;正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务&#xff08;如 OpenAI、Anthropic&#xff09;的无缝对接&…...

React---day11

14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store&#xff1a; 我们在使用异步的时候理应是要使用中间件的&#xff0c;但是configureStore 已经自动集成了 redux-thunk&#xff0c;注意action里面要返回函数 import { configureS…...

Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档&#xff09;&#xff0c;如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下&#xff0c;风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...

DingDing机器人群消息推送

文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人&#xff0c;点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置&#xff0c;详见说明文档 成功后&#xff0c;记录Webhook 2 API文档说明 点击设置说明 查看自…...

MySQL的pymysql操作

本章是MySQL的最后一章&#xff0c;MySQL到此完结&#xff0c;下一站Hadoop&#xff01;&#xff01;&#xff01; 这章很简单&#xff0c;完整代码在最后&#xff0c;详细讲解之前python课程里面也有&#xff0c;感兴趣的可以往前找一下 一、查询操作 我们需要打开pycharm …...

《Docker》架构

文章目录 架构模式单机架构应用数据分离架构应用服务器集群架构读写分离/主从分离架构冷热分离架构垂直分库架构微服务架构容器编排架构什么是容器&#xff0c;docker&#xff0c;镜像&#xff0c;k8s 架构模式 单机架构 单机架构其实就是应用服务器和单机服务器都部署在同一…...