任意顺序的四个点获取矩形的中心点,长宽和角度

由四个坐标位置计算中心点和旋转角度 由四个坐标位置计算中心点和旋转角度 import cv2 import numpy as np cnt = np.array(np.float32([[370.44574,562.12952],[326.68903, 591.64380],[ 290.47687, 537.95715],[334.23358, 508.44287]])) # 必须是array数组的形式 rect = cv2.minAreaRect(cnt) # 得到最小外接矩形的(中心(x,y), (宽,高), 旋转角度) print 阅读详情

假设你得到了四个任意顺序的坐标,可以通过我编的程序获得该矩形的长宽,角度和中心点

import cv2
import math


class Point(object):  # 坐标类
    def __init__(self, xParam=0.0, yParam=0.0):
        self.x = xParam
        self.y = yParam

    def distance(self, pt):
        xDiff = self.x - pt.x
        yDiff = self.y - pt.y
        return math.sqrt(xDiff ** 2 + yDiff ** 2)

    def show(self):
        print("(%.2f, %.2f)" % (self.x, self.y))

    def substract(self, pt):  # 减法生成向量
        newPt = Point()
        xNew = self.x - pt.x
        yNew = self.y - pt.y
        return Point(xNew, yNew)

    def add(self, pt):  # 加法生成中心点
        newPt = Point()
        xNew = (self.x + pt.x) / 2
        yNew = (self.y + pt.y) / 2
        return Point(xNew, yNew)


# 求取两个向量间的余弦值
def cosVector(p1, p2):
    result1 = p1.x * p2.x + p1.y * p2.y  
    result2 = p1.x ** 2 + p1.y ** 2 
    result3 = p2.x ** 2 + p2.y ** 2  
    return result1 / ((result2 * result3) ** 0.5)



# 有向矩形的四个顶点输入顺序任意时,返回旋转角度,w,h
def points_to_grasps(p, num=4, is_pos=True):  # 默认矩形框的w大于h
    res = []
    p = sorted(p, key=lambda Points: Points.x)  
    d12 = p[0].distance(p[1])
    d13 = p[0].distance(p[2])
    center_O = p[0].add(p[3])  
    vector_OB = Point(1, 0)  
    w = min(d12, d13)
    h = max(d12, d13)
    if d12 > d13:  
        point_A = p[1].add(p[3])
    else:
        if p[1].y < p[2].y:  
            point_A = p[2].add(p[3])
        else:  
            point_A = p[0].add(p[1])
    vector_OA = point_A.substract(center_O)  
    if is_pos:  
        cos_AOB = cosVector(vector_OA, vector_OB)
        box_class = cos_to_class(cos_AOB)
    else:
        box_class = 0
    res.append(str(center_O.x))
    res.append(str(center_O.y))
    res.append(str(w))
    res.append(str(h))
    res.append(str(box_class))
    return res

转载请附上链接

js已知多边形坐标点,求多边形的中心点坐标 你需要传入的数据类型如下: // 取面对象 中心点 var calculateCenter = function (lnglatarr) { var total = lnglatarr.length; var X = ... 阅读详情

相关推荐

已知载具(矩形)的中心点坐标、长、宽和倾斜角度,求载具(矩形)四个边界点

思路方法 1、以中心点的坐标,求不旋转的情况下矩形的四个顶点坐标; 2、再求按逆时针旋转目标角度后的四个点坐标;

weixin_42119432的博客 4145

已知中心点、长宽和旋转角度,求矩形的四个顶点坐标(Python)

本次实现有几个前提:可以将情况分为两种,即θ∈[0,π/2]\theta \in [0, \pi/2]θ∈[0,π/2]和θ∈[π/2,π]\theta \in [\pi/2, \pi]θ∈[π/2,π]先看第一种情况θ∈[0,π/2]\theta \in [0, \pi/2]θ∈[0,π/2]: 已知矩形的中心点(x,y)(x, y)(x,y),旋转角度θ\thetaθ在图中用橙色标注。先来求(x1,y1)(x_1,y_1)(x1​,y1​),用到图中绿色的辅助线,用到的三角形都标注了角θ\thetaθ

weixin_45453121的博客 1万+

已知矩形的四个顶点,求旋转角度

论文的需求是: 计算得散点集,用最小包围盒算法求得该散点集的最小包围矩形(返回四个顶点,顺序为逆时针),然后要生成一个和最小包围矩形方向一致,但是长宽自定义的小矩形。因为是“长宽自定义”,所以就不能用等比例缩放了,必须计算出方向q,再结合给定的长度、宽度计算小矩形的四个顶点坐标。 (图形是在经纬度上做的,所以左下角是(0,0)) 计算思路: 需要先将大矩形的四个顶点按照横坐标从大到小排序,以此确定点的顺序。 points.sort(reverse=True) x0 = points[0][0

请赐教 4245

初始化地图相关的一小部分配置

const _this = this //更改this指向,指向mobx //实例化地图(参数1:地图id,参数2:配置项) const map = new BMap.Map("plateLeveMap", { minZoom: 3, //最小缩放等级 maxZoom: 19, ...

BrocYu的博客 492

Halcon实战:如何精准计算旋转矩形的四个角点坐标(附完整代码)

本文详细介绍了在Halcon中精准计算旋转矩形四个角点坐标的工程化解决方案,包括核心原理、角度临界处理、顶点坐标计算及优化技巧。通过完整代码示例和实际应用案例,帮助开发者解决工业视觉检测中的矩形定位问题,提升检测精度和效率。

weixin_29205061的博客 195

PaddleOCR方向分类器实战:如何用矩形框长宽比提升文本方向检测准确率

本文针对PaddleOCR内置方向分类器在90/270度旋转图片上易误判的痛点,提出一种创新优化方案。通过分析文本检测输出的矩形框长宽比特征,结合统计决策逻辑,与分类器结果进行智能融合,有效提升了文本方向检测的准确率。该方法无需额外模型计算,即可显著改善复杂场景下的OCR预处理效果。

xxx12的博客 1073

【opencv】 旋转矩形

文章目录1. 旋转矩形2. 结果 1. 旋转矩形 //构建一个Mat(200*200) Mat image(200, 200, CV_8UC3, Scalar(0)); //设置一个旋转矩形3个参数分别为:质心(矩形中心),矩形长宽100、50 旋转角度:30 (clockwise) //RotatedRect 函数返回一个旋转矩形对象 RotatedRect rRect = RotatedRect(Point2f(100,100), Size2f(100,50), 60); Point2f vert

qq_35632833的博客 2152

Halcon实战:高效计算旋转矩形顶点坐标的通用方法

本文详细解析了Halcon中计算旋转矩形顶点坐标的通用方法。针对`smallest_rectangle2`算子返回参数的特性,重点阐述了角度归一化与坐标系转换两大核心难点,并提供了可直接复用的健壮脚本。该方法能有效避免因角度范围限制和坐标轴定义差异导致的常见计算错误,适用于机器视觉中的定位、测量等场景。

weixin_29198045的博客 216

根据3d框的八个顶点坐标,求他的中心点,长宽高和yaw值(Python)

要从一个3D框的八个顶点求出它的中心点、长、宽、高和yaw值,首先你需要明确框的几何形状和坐标点的顺序。首先,找到与x轴或y轴的角度。这可以通过计算点( P_1 ) 和 ( P_2 ) 之间的向量与x轴或y轴之间的角度来实现。其中,arctan2是四象限的反正切函数,它会返回一个介于-(\pi)和(\pi)之间的角度值。其中,( (x_i, y_i, z_i) ) 是第i个顶点的坐标。长 = distance(( P_1 ), ( P_2 ))宽 = distance(( P_1 ), ( P_3 ))

h1773655323的博客 1928

矩形检出算法介绍

背景 矩形检出算法即从一副图像中找出候选矩形,不同于hough找圆等算法在opencv中有现成接口,矩形检出算法需要自己手动实现。其常见用途是移动端拍摄文档进行矫正等,近期开发二维码识别时也用到了矩形检出的算法,在此一并做个总结。 常规算法 常规算法也是最直观、大家都能想到的算法(此处搬运别人公众号的内容:https://mp.weixin.qq.com/s/mkRjgQ8XY4L73ovV...

GoRunningSnail的博客 9936

OpenCV minAreaRect 角度计算踩坑实录:为什么你的旋转矩形宽高总对不上?

本文深入解析OpenCV中minAreaRect函数在计算旋转矩形宽高和角度时的常见问题,提供了一套稳定的处理策略。通过标准化角度和宽高关系,帮助开发者避免目标检测、文档矫正等项目中的常见错误,提升计算机视觉应用的准确性。

weixin_42662293的博客 415

lisp提取长方形坐标_lisp顺序获得矩形四个点的坐标分别赋值给s1—s4

追问 : 您的这个,只能是提取四个坐标啊,收到这个矩形的限制啊,您能给按照这个图给的顺序筛选一下这四个坐标不,不论怎么画的,只要我提取都是得到这个顺序的四个坐标追答 : (defun c:tt (/ EN LST SEL)(setq sel (entsel "\n选择四边形:")en (entget (car sel))) (setq Lst (mapcar 'cdr (vl-remove-i...

weixin_35681614的博客 1057

海康体积相机输出长宽数据对调的纠正方法

体积相机输出长宽数据对调的纠正方法 说明:适用于全系列体积相机通过SDK获取长宽高数据出现长宽数据与实际包裹长宽对调的情况。 为保证文章的连贯性,直接讲述结论以及纠正方法。 涉及的特征 获取到的长宽高数据,总是 “长度数值>宽度数值”; 获取到的包裹四个顶点坐标顺序:X坐标值最小的为坐标点为[0],按顺时针方向依次[0][1][2][3];(参考图如下,得出结论过程在文章末尾 附2) 线段[0][1]和[0][3]的长度即可表示矩形的两条边长,即长宽。 纠正方法实现 基本逻辑.

qq_29123967的博客 1095

Opencv之坐标与点

目录 一、坐标 二、点 三、关于minareaRect对象rect   一、坐标 img的坐标以行列确定,img[row][column]可以获取到row行,column列的像素。 图片宽度*高度是300*100,三通道,用opencv的img.shape返回的是(100,300,3),shape返回的是图像的行数,列数,色彩通道数。   二、点 点是有x轴与y轴确定的,而x轴...

qq_37385726的博客 3751

从零构建:四轴机械臂D-H参数建模与MATLAB实战指南

本文详细介绍了四轴机械臂D-H参数建模的完整流程与MATLAB实战应用。从机械臂运动学基础出发,解析D-H参数原理与坐标系建立规则,提供MATLAB Robotics Toolbox的安装、模型创建及正逆运动学求解的代码实现。特别针对四轴机械臂的逆运算优化、轨迹规划和奇异位形规避等高级应用给出实用解决方案,是机器人开发者的实战指南。

weixin_29062255的博客 419

FPGA音频处理入门:手把手教你用Verilog实现I2S接收模块(附完整代码)

本文详细介绍了如何使用Verilog在FPGA上实现I2S接收模块,涵盖I2S协议原理、Verilog架构设计、完整代码实现及优化技巧。通过实战案例,帮助开发者快速掌握数字音频处理技术,适用于嵌入式音频系统开发。

weixin_30335575的博客 417

python 最小外接矩形_python opencv minAreaRect 生成最小外接矩形的方法

使用python opencv返回点集cnt的最小外接矩形,所用函数为 cv2.minAreaRect(cnt) ,cnt是点集数组或向量(里面存放的是点的坐标),并且这个点集不定个数。举例说明:画一个任意四边形(任意多边形都可以)的最小外接矩形,那么点集cnt 存放的就是该四边形的4个顶点坐标(点集里面有4个点)cnt = np.array([[x1,y1],[x2,y2],[x3,y3],[...

weixin_39602615的博客 635

从零开始学DAG:用dagitty软件快速构建因果图的5个步骤

本文为初学者提供了使用dagitty软件快速构建因果图的5个实用步骤。通过一个公共卫生研究实例,详细演示了如何从定义核心变量开始,逐步引入混杂、中介和碰撞变量,最终利用dagitty的自动分析功能识别最小充分调整集,从而科学指导研究设计与统计分析,有效提升因果推断的严谨性。

ii567的博客 799

OpenCV实战:如何用最小外接矩形精准定位物体轮廓(附完整代码)

本文深入解析了OpenCV中最小外接矩形(minAreaRect)的核心原理与实战应用。通过对比最大外接矩形,详细阐述了如何利用最小外接矩形精准定位物体轮廓、提取朝向与尺寸信息,并附上完整代码,助力实现文档矫正、工业测量等高级视觉任务。

weixin_29081101的博客 311

斗罗大陆叙事体系与战斗系统设计解析

在文学创作与游戏设计中,世界观构建和战斗系统设计是两大核心技术要素。世界观作为故事发生的背景框架,需要融合东西方文化元素并建立量化标准,如《斗罗大陆》中武魂觉醒与魂环等级体系。战斗系统则需突破简单数值对抗,发展出武魂特性、魂技组合与环境互动的三维体系,其中魂导器技术的引入展现了科技与魔法的创新融合。这些设计原理在RPG游戏开发、网络文学创作等领域具有广泛应用价值,特别是对需要长期运营的IP作品,完善的系统设定能有效支撑剧情延展与商业化开发。本文以现象级作品为例,剖析其武魂拟态理论和魂师工业化构思如何成就经典

weixin_29291069的博客 249

神经网络基础概念总结(小白入门自用)

神经网络人工神经网络多层感知机激活函数反向传播算法损失函数权值初始化正则化方法 人工神经网络 人工神经元:人工神经元是人工神经网络的基本单元。模拟生物神经元,人工神经元有1个或者多个输入(模拟多个树突或者多个神经元向该神经元传递神经冲动);对输入进行加权求和(模拟细胞体将神经信号进行积累和树突强度不同);对输入之和使用激活函数计算活性值(模拟细胞体产生兴奋或者抑制);输出活性值并传递到下一个人工神经元(模拟生物神经元通过轴突将神经冲动输入到下一个神经元)。 人工神经网络:大量的人工神经元以某种链接方式得来的

qq_42011158的博客 646

ppt矩形里面的图片怎么放大缩小_都说PPT是小AI,那试试处理WB电泳图吧

欢迎分享本文到朋友圈,文章转载、投稿、业务合作联系请微信Havana90~~Westernblot电泳图可能是生命科学实验中最常见的结果图片了,从成像仪上下来的原始图片难免各种问题,如条带不水平、有些区域并不是结果所需要等。下面用PPT来处理WB电泳图,最终获得一张符合SCI论文发表要求的图片。01class1、把图片复制粘贴进一个新建PPT页面(使用空白版式,去掉占位符),并调出各种参...

weixin_39727976的博客 485

(王道计算机组成原理笔记)第一章计算机系统概述-第二节:计算机系统层次结构 1(计算机系统组成、计算机硬件)

文章目录一:冯诺依曼体系结构(1)存储程序计算机(2)层次结构二:计算机硬件概述(1)存储器A:存储元、存储单元、存储体、存储字和存储字长B:MAR 一:冯诺依曼体系结构 在冯诺依曼体系结构中,计算机的硬件主要有**存储器,运算器,控制器,输入和输出设备(也叫做I/O设备)**组成。 (1)存储程序计算机 冯诺依曼体系结构也叫做存储程序计算机,计算器和计算机的唯一区别就是计算器是不能编程的,只能做电路板中设定好的固定的运算。 这也就意味着计算器本质就是一个不能编程的计算机,其在硬件层面已经将逻辑写死,如果

快乐江湖的博客 1万+

ppt矩形里面的图片怎么放大缩小_干货:手把手教你用 PPT 处理 WB 电泳图

Westernblot 电泳图可能是生命科学实验中最常见的结果图片了,从成像仪上下来的原始图片难免各种问题,如条带不水平、有些区域并不是结果所需要等。下面用 PPT 来处理 WB 电泳图,最终获得一张符合 SCI 论文发表要求的图片。1、把图片复制粘贴进一个新建 PPT 页面(使用空白版式,去掉占位符),并调出各种参考线:a. 在 PPT 工作区右键-网格和参考线-勾选 「参考线...

weixin_34656273的博客 860

使用Mask2Former和X-Decoder训练自定义数据集及结果复现报告

本报告记录了使用MMDetection框架中的Mask2Former和X-Decoder模型在自定义数据集上的训练过程。报告包含环境配置、数据集准备、模型训练与优化(解决了Mask2Former的PQ值异常问题)、性能评估等关键环节。详细展示了从数据集转换(将客户提供的COCO格式数据适配MMDetection框架)、配置文件修改、到最终模型训练和评估的全流程。特别针对Mask2Former训练中的PQ值异常问题提供了解决方案,并对比了两种模型在自定义数据集上的表现。报告还包含完整的代码实现和技术细节。

huanghm88的专栏 1088

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

上一篇: mask图像获取物体标注框(仅限一张图片一个物体)
-Gentle-
博客等级 码龄8年 80粉丝 16原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值