OpenCV中RotatedRect的角度问题与平行判定

2023-11-08

OpenCV中RotatedRect的角度问题与平行判定

在运用OpenCV的过程中,想对两个细窄长方形进行平行判定,但是因为RotatedRct的角度问题,走了很多弯路。

RotatedRect

OpenCV中,以左上角角点为O点,竖直向下为Y正方向,水平向右为X正方向

OpenCV的RotatedRct在标志四个角点时,以Y值最大(最下方)的点为p[0],依次顺时针标记p[1],p[2],p[3]。其中,p[0]与p[3],p[1]与p[2]之间的线段为width ,而p[0]与p[1],p[2]与p[3]之间的线段为height 。取顺时针为角度正方向angle正是由X轴正方向转向width的角度(负值)。而在我们朴素的认知中,一般直觉是较长一边与X轴正方向的夹角。所以在出现图4情况时,很容易理解成-120,而不是-30
在这里插入图片描述

​ (网图,侵删)

平行的判定

进行平行判定时,可以考虑方向向量与叉乘

  1. 获得单位方向向量
 //vertices为存放旋转矩形角点的数组
if (width < height) {
     //即图4这种情况
     //注意除以长度获得单位向量
            DirectionVector.x = (vertices[1].x - vertices[0].x) / height;
            DirectionVector.y = (vertices[1].y - vertices[0].y) / height;
        } else {
     //即图123情况
            DirectionVector.x = (vertices[3].x - vertices[0].x) / width;
            DirectionVector.y = (vertices[3].y - vertices[0].y) / width;
        }
  1. 求叉乘(外积)
 //判断是否平行
            float CrossProduct = LeftRect.DirectionVector.x * RightRect.DirectionVector.y -
                                 LeftRect.DirectionVector.y * RightRect.DirectionVector.x;
            if (asin(abs(CrossProduct)) > 15) continue;
            float MeanAngle = std::min(LeftRect.angle, RightRect.angle);

寻找左上角点

笔者的应用场景是:检测左右灯条,并以两灯条为边拟合成一个矩形。。在这个场景下,矩形的边近似平行与两个坐标轴,x+y的最小值99%以上都是左上角点,因此找到x+y的最小值,再重排序。

//寻找左上角点,并重新排序
            cv::Point2f temp[4];
            Armor.points(temp);
            int flag=0;
            for(int i =0;i<4;i++){
                float Point0=temp[0].x+temp[0].y;

                if(temp[i].x+temp[i].y>Point0)continue;
                else{
                    Point0=temp[i].x+temp[i].y;
                    flag=i;
                }
            }
            cv::Point2f vertices[4];
            for(int i =0;i<4;i++){

                vertices[i]=temp[(flag+i)%4];
            }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenCV中RotatedRect的角度问题与平行判定 的相关文章

  • 如何删除树莓派的相机预览

    我在我的 raspberryPi 上安装了 SimpleCv 并安装了用于使用相机板的驱动程序 uv4l 驱动程序 现在我想使用它 当我在 simpleCV shell Camera 0 getImage save foo jpg 上键入时
  • 使用Python的工业视觉相机[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何将 mat 转换为 array2d

    我为dlib http dlib net face landmark detection ex cpp html那里的面部地标代码使用 array2d 来获取图像 但我喜欢使用 Mat 读取图像并转换为 array2d 因为 dlib 仅支
  • OpenCV 仅围绕大轮廓绘制矩形?

    第一次发帖 希望我以正确的方式放置代码 我正在尝试检测和计算视频中的车辆 因此 如果您查看下面的代码 我会在阈值处理和膨胀后找到图像的轮廓 然后我使用 drawContours 和矩形在检测到的轮廓周围绘制一个框 我试图在 drawCont
  • 无法在 Windows 7 机器中使用 OpenCV 2.4.3、Python 2.7 打开“.mp4”视频文件

    我目前正在进行一个涉及读取 mp4 视频文件的项目 我遇到的问题是它在Windows 7机器上使用Python 2 7 32位 OpenCV 2 4 3 cv2 pyd 代码片段如下 try video cv2 VideoCapture v
  • BASH 脚本编译多个 C++ 文件 - OpenCV

    请参见在C 和OpenCV中调用其他文件中的函数 https stackoverflow com questions 24442836 call functions in other files in c and opencv 对于最初的问
  • 使用 ffmpeg 或 OpenCV 处理原始图像

    看完之后维基百科页面 http en wikipedia org wiki Raw image format原始图像格式 是任何图像的数字负片 为了查看或打印 相机图像传感器的输出具有 进行处理 即转换为照片渲染 场景 然后以标准光栅图形格
  • 为什么我无法在 Mac 12.0.1 (Monterey) 上使用 pip 安装 OpenCV? [复制]

    这个问题在这里已经有答案了 当我尝试使用 python pip 安装 OpenCV 时 它显示了以下内容 Remainder of file ignored Requirement already satisfied pip in Libr
  • 如何使用 Python 裁剪图像中的矩形

    谁能给我关于如何裁剪两个矩形框并保存它的建议 我已经尝试过这段代码 但效果不佳 import cv2 import numpy as np Run the code with the image name keep pressing spa
  • 2d 图像点和 3d 网格之间的交点

    Given 网格 源相机 我有内在和外在参数 图像坐标 2d Output 3D 点 是从相机中心发出的光线穿过图像平面上的 2d 点与网格的交点 我试图找到网格上的 3d 点 This is the process From Multip
  • 如何使用 opencv python 计算乐高积木上的孔数?

    我正在开发我的 python 项目 我需要计算每个乐高积木组件中有多少个孔 我将从输入 json 文件中获取有关需要计算哪个程序集的信息 如下所示 img 001 red 0 blue 2 white 1 grey 1 yellow 1 r
  • 如何使用 colorchecker 在 opencv 中进行颜色校准?

    我有数码相机获取的色彩检查器图像 我如何使用它来使用 opencv 校准图像 按照以下颜色检查器图像操作 您是想问如何进行颜色校准或如何使用 OpenCV 进行校准 为了进行颜色校准 您可以使用校准板的最后一行 灰色调 以下是您应该逐步进行
  • Opencv Mat内存管理

    内存管理对于图像类至关重要 在opencv中 图像类是cv Mat 它有一个微妙的内存管理方案 假设我已经有了自己的图像类SelfImage class SelfImage public int width int height unsig
  • cv2.VideoWriter:请求一个元组作为 Size 参数,然后拒绝它

    我正在使用 OpenCV 4 0 和 Python 3 7 创建延时视频 构造 VideoWriter 对象时 文档表示 Size 参数应该是一个元组 当我给它一个元组时 它拒绝它 当我尝试用其他东西替换它时 它不会接受它 因为它说参数不是
  • 是否可以在 PyScript 中使用 OpenCV 模块?

    我想使用 opencv 模块 但无法导入 OpenCV 那么我该如何解决这个问题呢 顺便说一句 Pyodide 支持 OpenCV 示例代码 https i stack imgur com ahwex jpg 尚不支持 OpenCV 此时O
  • OpenCV:如何从网络摄像头获取原始 YUY2 图像?

    你知道如何获得吗raw YUY2来自网络摄像头的图像 使用 OpenCV DirectShow 无 VFW http opencv willowgarage com wiki CameraCapture http opencv willow
  • “没有名为‘cv2’的模块”,但已安装

    我已经安装了包含 opencv 贡献的 whl 文件 因为我想使用 SIFT 算法 我在 conda 环境中使用 pip 安装了它 所以当我在 conda list 中提示时 它会向我显示 opencv python 3 4 5 contr
  • 在 Visual Studio C++ 2008 中包含 dll

    有没有办法将 dll 包含在项目中 这样我就不必在编译后将这些 dll 与可执行文件放在同一文件夹中 这样我就可以用它们编译我的项目 这是否有可能 如果是 有人可以指导我 我的项目是一个 opencv 项目 有很多 dll 我必须包含在文件
  • 如何在 Qt 应用程序中通过终端命令运行分离的应用程序?

    我想使用命令 cd opencv opencv 3 0 0 alpha samples cpp cpp example facedetect lena jpg 在 Qt 应用程序中按钮的 clicked 方法上运行 OpenCV 示例代码
  • 为什么Android的ImageReader类这么慢?

    我尝试了适用于 Android 3 4 1 的全新 OpenCVJavaCamera2View但它太慢了 仅显示相机视图约 15 fps 当我尝试较旧的JavaCameraView相反 它给了我很好的结果 30fps 这是我相机的极限 我想

随机推荐

  • 读spring in action spring 之旅

    spring bean 的作用域 Spring定义了多种作用域 可以基于这些作用域创建bean 包括 单例 Singleton 在整个应用中 只创建bean的一个实例 原型 Prototype 每次注入或者通过Spring应用上下文获取的时
  • 【CV夏令营】学习笔记01:跑通机器学习版本baseline

    0 学习背景 有幸参与了DataWhale的AI视觉夏令营 沉浸式全流程体验AI比赛 比赛题目是 脑PET图像分析和疾病预测挑战赛 这里给出链接 https challenge xfyun cn topic info type pet 20
  • 快速找到某台电脑上tomcat的安装路径

    所有程序 gt Apache Tomcat 7 0 Tomcat7 gt Tomcat 7 0 Program Directory 即可 当然前提是他的是window安装版
  • 【人生第一份offer~】北京京东科技 日常实习一面二面(已OC) 21/12/22&23

    北京京东科技 日常实习一面 21 12 22 体验极佳的一次面试 面试官大大贼温柔 循循善诱地帮助我把问题捋出来 另外问题也都对我这个初学者很友好 超级简单哈哈哈 面试完半个小时二面电话就来了 约到了明天上午十一点 聊项目 说下你在这个大型
  • tinymce变化后onchange光标变化问题(React)

    关于tinymce富文内容变化后 光标会自动跳到最前面的问题 比如回车 复制粘贴 都会跳到最前面 由于我是ant design pro包了一层 它给分配的value和onchange 不用的话 确实也不会有这问题 但那样form提交表单时
  • Git配置credential helper,并使用Http/Https传输

    现实场景 在使用Git进行开发的时候 我们可以使用ssh url或者http url来进行源码的clone push pull 二者的区别是 使用ssh url需要在本地配置ssh key 这也就意味着你必须是开发者或者有一定的权限 每次的
  • 这些错误你都犯过吗?来看看9大XMind初学者常见错误!

    当我们在思考一个事件时 我们往往会将自己的想法通过思维导图的方式展现出来 XMind就是一款强大的思维导图和头脑风暴工具 数十年来一直是百万用户的首选 gt gt 点击下载Mind ZEN试用版 lt lt 对于初学者来说 常常会犯一些固有
  • TypeC规范--CC连接

    上次在TypeC与PD快充文章内我们在后面放了几张图 如下图 上图位于TypeC规范章节4 5 1 3 3 我们以这个图为例介绍一下 我们可以看到在VBus上会有MOS去切换source和sink的通路 这个是DRP在VBUS上的特点 我们
  • Entity Framework Core系列教程-26-数据迁移

    Entity Framework Core数据迁移 迁移是一种通过保留数据来使数据库架构与EF Core模型保持同步的方法 如上图所示 EF Core API从域 实体 类构建EF Core模型 并且EF Core迁移将基于EF Core模
  • Ubuntu获取串口权限使用CAN分析仪

    Ubuntu获取串口权限使用CAN分析仪 通过以下命令获取usb设备信息 lsusb 可以得到以下信息 Bus 002 Device 001 ID 1d6b 0003 Linux Foundation 3 0 root hub Bus 00
  • Linux Maven-v3.8.6的安装与配置

    Maven v3 8 6的安装与配置 官网下载页地址 maven依赖jdk环境 且需要 jdk1 7 以上版本 安装之前需要先配置好 JAVA HOME 的环境变量 有需要可以看之前的 JDK 11的安装与环境变量配置 1 下载 解压 wg
  • 2023华为OD机试真题【查找单入口空闲区域/回溯法】

    题目描述 给定一个 m xn 的矩阵 由若干字符 和0构成 X表示该处已被占据 0 表示该处空闲 请找到最大的单入口空闲区域 解释 空闲区域是由连通的O组成的区域 位于边界的0可以构成入口 单入口空闲区域即有目只有一个位于边界的0作为入口的
  • 教你从零开始搭建私有网盘及个人博客(云服务器基础使用教程)

    云服务器选择 首先 你必须购买一个的服务器 不过你可以到阿里云的 高校学生 在家实践 计划 http suo im 5sMWSq 中免费领取6个月的云服务器先试试手 选配服务器和选配个人电脑差不多 所以配置方面不多提 我们直接看到 镜像 选
  • Threejs加载OBJ模型

    threejs加载OBJ模型代码
  • 2014年6月23日-6月29日(共11小时,剩4424小时)

    6月23日 上午有事 下午1小时 剩4438小时 6月24日 3小时 剩4435小时 6月25日 5小时 剩4430小时 6月26日 1小时 剩4429小时 6月27日 3小时 剩4426小时 6月29日 2小时 剩4424小时
  • 论文笔记:When Do Contrastive Learning Signals Help Spatio-TemporalGraph Forecasting?

    2022 SigSpatial 1 intro 1 1 背景 论文认为数据稀缺是阻碍时空图 STG 预测的一个关键问题 在这一领域的公共数据集通常只包含几个月的数据 限制了可以构建的训练实例数量 gt 学习模型可能会对训练数据过拟合 导致泛
  • Redis的这些都没有掌握,你还想要拿Offer?

    Redis 简介 Redis 是完全开源免费的 遵守 BSD 协议 是一个高性能的 key value 数据库 Redis 与 其他 key value 缓存产品有以下三个特点 Redis 支持数据持久化 可以将内存中的数据保存在磁盘中 重
  • 反爬虫策略的应对方法汇总

    现在越来越多的工作需要用到爬虫程序 但是同时也有很多人会通过爬虫程序恶意竞争 因此为了能够保护自己的正当权益 各种反爬虫程序被研发利用起来 所以很多时候 在进行爬虫工作的时候首要面对的就是爬虫和反爬虫的拉锯战 这里就说一下常见的防爬虫策略和
  • c语言排序之冒泡排序升序的使用详解

    在c语言中实现冒泡排序 简介 冒泡 这个名字的由来是因为越大的元素会经由交换慢慢 浮 到数列的顶端 故名 冒泡排序应该是最常见的排序方法了 c语言初学者一定要学会使用 冒泡排序 BubbleSort 的基本概念是 依次比较相邻的两个数 将小
  • OpenCV中RotatedRect的角度问题与平行判定

    OpenCV中RotatedRect的角度问题与平行判定 在运用OpenCV的过程中 想对两个细窄长方形进行平行判定 但是因为RotatedRct的角度问题 走了很多弯路 RotatedRect OpenCV中 以左上角角点为O点 竖直向下