首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

OpenCV Python中旋转矩形中的角点顺序

在OpenCV Python中处理旋转矩形时,通常涉及到 cv2.minAreaRect() 函数,该函数用于计算给定点集的最小面积边界矩形(可能是旋转的)。这个函数返回一个 Box2D 结构,其中包含矩形的中心点坐标、宽度、高度以及旋转角度。

要获取旋转矩形的四个角点,可以使用 cv2.boxPoints() 函数。这个函数接受 Box2D 结构作为输入,并返回一个包含矩形四个角点的数组。这些角点的顺序是特定的,通常是连续的,但并不总是按照常规的左上、右上、右下、左下的顺序排列。

角点的顺序

cv2.boxPoints() 返回的角点顺序通常是:

  1. 左下角
  2. 左上角
  3. 右上角
  4. 右下角

这里的“左”和“右”是相对于矩形的最小宽度方向,而“上”和“下”是相对于矩形的最小高度方向。这意味着如果矩形是倾斜的,这些术语(左、右、上、下)可能与你从视觉上理解的方向不完全一致。

示例代码

下面是一个使用OpenCV在Python中处理旋转矩形并打印角点的示例:

代码语言:javascript
复制
import cv2
import numpy as np

# 创建一个白色背景图像
image = np.zeros((300, 400, 3), dtype="uint8")
image.fill(255)

# 定义一些点(这些点可以是任意形状或大小的对象的边界)
points = np.array([[100, 100], [200, 80], [250, 200], [150, 220]])

# 绘制点
for point in points:
    cv2.circle(image, tuple(point), 5, (0, 0, 255), -1)

# 计算最小面积矩形
rect = cv2.minAreaRect(points)

# 获取矩形的四个角点
box = cv2.boxPoints(rect)
box = np.int0(box)

# 绘制矩形
cv2.drawContours(image, [box], 0, (0, 255, 0), 2)

# 显示图像
cv2.imshow("Rotated Rectangle", image)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这个例子中,我们首先定义了一些点,并使用 cv2.minAreaRect() 计算这些点的最小面积矩形。然后,我们使用 cv2.boxPoints() 获取矩形的角点,并将这些点绘制在图像上。

注意事项

  • 角点的顺序可能会因OpenCV版本或特定情况而异,因此在实际应用中,最好通过绘制或其他方式验证角点的实际顺序。
  • 如果需要特定顺序(例如,用于图像处理或机器学习任务中的特征提取),可能需要手动调整返回的角点顺序。
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

OpenCV中检测ChArUco的角点(2)

论文阅读模块将分享点云处理,SLAM,三维视觉,高精地图相关的文章。 opencv中ArUco模块实践(1) ChAruco标定板 ArUCo标记板是非常有用的,因为他们的快速检测和多功能性。...vectorcharucoIds:charucoCorners中每个检测到的角点的ID。 ChArUco角点的检测基于先前检测到的标记。...因此,首先检测标记,然后从标记中插值ChArUco角点。检测ChArUco角点的函数是 cv::aruco::interpolateCornersCharuco() 这个例子展示了整个过程。...首先,检测标记,然后从这些标记中插值ChArUco角点。...如果没有检测到周围的两个标记中的任何一个,这通常意味着该区域存在某种遮挡或图像质量不好。在任何情况下,最好不要考虑该角点,因为我们想要的是确保插值的ChArUco角点非常精确。

2.9K40

OpenCV 3.1.0中的图像放缩与旋转

OpenCV在3.1.0版本中的图像放缩与旋转操作比起之前版本中更加的简洁方便,同时还提供多种插值方法可供选择。...当前OpenCV 3.1.0中支持常见插值算法包括: -临近点(INTER_NEAREST)、 -双线性插值(INTER_LINEAR)、 -立方插值(INTER_CUBIC)、 -LANCZOS4(INTER_LANCZOS4...二:旋转 图像绕原点逆时针旋转a角,其变换矩阵及逆矩阵(顺时针选择)的图像如下: ?...OpenCV3.1.0中实现图像旋转需要用到的两个API函数分别是 - getRotationMatrix2D - warpAffine 第一个函数是用来产生旋转矩阵M,第二个函数是根据旋转矩阵M实现图像指定角度的旋转...从上面旋转以后图像可以看到四个角被剪切掉了,无法显示,我们希望旋转之后图像还能够全部显示,在之前2.x的OpenCV版本中要实现这样的功能,需要很多的数学知识,而在3.1.0中只需要添加如下几行代码即可实现旋转之后的全图显示

2.3K70
  • C#使用OpenCV剪切图像中的圆形和矩形

    前言 本文主要介绍如何使用OpenCV剪切图像中的圆形和矩形。 准备工作 首先创建一个Wpf项目——WpfOpenCV,这里版本使用Framework4.7.2。...这里的Emgu.CV选择4.3.0.3890版本,然后安装Emgu.CV和Emgu.CV.runtime.windows。 使用OPenCV剪切矩形 现在,我们进入项目,进行OPenCV的调用。...然后,我们就可以在图片里查找图形轮廓了,当轮廓有三个顶点,那么它是三角形,如果有四个顶点,那么它是四边形;我们要截取矩形,所以这里要加一个角度的判断,四个角必须都在80-100度之间。...下面是截取矩形的代码,代码中只截取了宽度最大的那个矩形。...剪切图像中的圆形和矩形就已经介绍完了。

    3.7K11

    cv2.cornerHarris()详解 python+OpenCV 中的 Harris 角点检测

    参考文献----------OpenCV-Python-Toturial-中文版.pdf 参考博客----------http://www.bubuko.com/infodetail-2498014.html...窗口函数可以是正常的矩形窗口也可以是对每一个像素给予不同权重的高斯窗口 角点检测中要使 E (μ,ν) 的值最大。这就是说必须使方程右侧的第二项的取值最大。...cv2.cornerHarris()函数的返回值其实就是R值构成的灰度图像 灰度图像坐标会与原图像对应  R值就是角点分数 当R值很大的时候 就可以认为这个点是一个角点 OpenCV 中的 Harris...• ksize - Sobel 求导中使用的窗口大小   • k - Harris 角点检测方程中的自由参数,取值参数为 [0,04,0.06]. python 实现代码如下: 1 # -*- coding...R组成的   当 λ 1 和 λ 2 都很大,并且 λ 1 ~λ 2 中的时,R 也很大,(λ 1 和 λ 2 中的最小值都大于阈值)说明这个区域是角点。

    2.1K40

    【论文复现】找出图像中物体的角点

    概述 本文复现论文A COMBINED CORNER AND EDGE DETECTOR中提出的图像中的物体角点检测算法,也称Harris算法。...该方法对算力几乎没有任何要求,依据图像邻域内灰度值的分布特点来对图像中各区域的角点进行判断。不像深度学习需要依靠大量数据的训练且对数据集分布有依赖性,所以时至今日依然在工业界有着很高的应用价值。...本文所涉及的所有资源的获取方式:这里 算法原理 正如边缘在灰度图像中在某一个方向上会出现明显的灰度变化,角点在图像中往往是在两个方向上都出现明显的灰度变化。...如在此图中,红点标注处的角点在两个箭头方向的垂直方向上都有明显的灰度变化,两个红色箭头标注出了它的两个灰度变换边缘。...即可看到视频中示例图片的角点检测效果。

    6910

    cv2.cornerHarris()详解 python+OpenCV 中的 Harris 角点检测

    参考文献----------OpenCV-Python-Toturial-中文版.pdf 参考博客----------http://www.bubuko.com/infodetail-2498014.html...窗口函数可以是正常的矩形窗口也可以是对每一个像素给予不同权重的高斯窗口 角点检测中要使 E (μ,ν) 的值最大。这就是说必须使方程右侧的第二项的取值最大。...cv2.cornerHarris()函数的返回值其实就是R值构成的灰度图像 灰度图像坐标会与原图像对应  R值就是角点分数 当R值很大的时候 就可以认为这个点是一个角点 OpenCV 中的 Harris...• ksize - Sobel 求导中使用的窗口大小   • k - Harris 角点检测方程中的自由参数,取值参数为 [0,04,0.06]. python 实现代码如下: 1 # -*- coding...R组成的   当 λ 1 和 λ 2 都很大,并且 λ 1 ~λ 2 中的时,R 也很大,(λ 1 和 λ 2 中的最小值都大于阈值)说明这个区域是角点。

    8.8K100

    Python中的顺序表介绍

    在 Python 中,列表是一种基本的数据类型,列表的数据组成了一个序列,序列里的数据是有序的(索引),可以快速地找到指定的数据。 在开发中,经常需要将一组数据作为一个整体来处理。...如果一组数据组成了一个序列,且数据在序列里有位置和顺序关系,则构成的序列被称为线性表,如 Python 中的列表。 ?...四、Python中的顺序表 Python 中的列表 list 和元组 tuple 两种数据类型都属于顺序表。 Python 中的列表有以下特点: 1....元组 tuple 是 Python 中的不可变数据类型,是不变的顺序表,因此不支持改变内部状态的操作,而其他方面,与列表 list 的性质类似。...列表和元组是 Python 语言为开发者设计好的顺序表数据类型,非常方便好用。除了使用现成的顺序表,我们也可以自己实现顺序表。

    1.3K20

    奇门遁甲| OpenCV中矩形框的各种神操作

    函数说明与基本操作 图象处理中最常见的就是截取图象的一部分区域区域进行处理,这部分区域简称ROI,最常见的ROI区域就是矩形,当然还有很多不规则的ROI区域。...对矩形ROI区域位置,OpenCV中有个数据结构cv::Rect来表示。...cv::Rect的成员变量与函数支持说明: Rect.x 表示左上角点x的坐标 Rect.y 表示左上角点y的坐标 Rect.width 表示矩形的宽度 Rect.height 表示矩形的高度 Rect.area...() 表示矩形的面积 Rect.size() 表示矩形的大小 Rect.tl() 表示矩形左上角点的坐标 Rect.br() 表示矩形右下角点的坐标 Rect.contains() 判定一个点是否在矩形区域内...:circle(result, r1.br(), 3, cv::Scalar(0, 255, 255), 3, 8, 0); // 判定一个点是否在矩形内 cv::Point pt1(10, 15);

    1.4K20

    YoloV5一系列实践详情,Github代码已开源

    使用ONNXRuntime部署yolov5检测车牌和4个角点,包含C++和Python两个版本的程序。程序会输出车牌的水平矩形框的左上和右下顶点的坐标(x,y),车牌的4个角点的坐标(x,y)。...源码地址是https://github.com/hpc203/rotate-yolov5-opencv-onnxrun 在编写这套程序的过程中,发现在python程序里,opencv的dnn模块提供了现成的计算旋转矩形框的...但是在C++程序里,opencv的dnn模块提供现成的计算旋转矩形框的NMS函数NMSBoxesRotated。因此在C++程序里,需要自己编写实现计算旋转矩形框的NMS函数。...经调研发现opencv库里有表示旋转矩形框的结构体RotatedRect,也有计算两个旋转矩形框的交叠区域和交叠面积的函数rotatedRectangleIntersection和contourArea...,最终编写完成了计算旋转矩形框的NMS函数。

    1.6K30

    opencv 7 -- 边界矩形

    min_rect[0][1]),(min_rect[1][0],min_rect[1][1]),0) 其中包含矩形左上角角点的坐标(x,y),矩形的宽和高(w,h),以及旋转角度。...但是要绘制这个矩形需要矩形的 4 个角点,可以通过函数 cv2.boxPoints() 获得 box:[ [x0,y0], [x1,y1], [x2,y2], [x3,y3] ] # 拿到每个轮廓的坐标...[1][1]),0) box = cv2.boxPoints(min_rect) minAreaRect函数返回矩形的中心点坐标,长宽,旋转角度[-90,0),当矩形水平或竖直时均返回-...90 最小外接矩形的4个顶点顺序、中心坐标、宽度、高度、旋转角度(是度数形式,不是弧度数)的对应关系如下: ?...也就是说,在这里,width与height不是按照长短来定义的 在opencv中,坐标系原点在左上角,相对于x轴,逆时针旋转角度为负,顺时针旋转角度为正。在这里,θ∈(-90度,0]

    1.8K20

    OpenCV中的光流及视频特征点追踪

    不是很严谨的——稀疏光流特征点追踪效果图如下: 它追踪了视频中多个车的主驾驶、副驾驶,以及行人的边缘角点的轨迹: 此代码不检查下一个关键点的正确程度。...因此即使图像中的任何特征点消失,光流也有可能找到下一个看起来可能靠近它的点。对于稳健的跟踪,角点应该在特定的时间间隔内检测点。...cv2.calcOpticalFlowFarneback(): 追踪视频中的密集特征点 取第一帧,检测其中的一些 Shi-Tomasi 角点,使用 Lucas-Kanade 光流迭代跟踪这些点。...然后在下一步中迭代地将这些下一个点作为前一个点传递。 使用 Harris 角点检测器 检查逆矩阵的相似性。它表示角点是更好的跟踪点。...中的密集光流 # Lucas-Kanade 方法计算稀疏特征集的光流(使用 Shi-Tomasi 算法检测到的角点)。

    99300

    二.OpenCV和Numpy读取修改像素、几何图形绘制

    表示边框的粗细 – lineType表示线条的类型 – shift表示点坐标中的小数位数 下面的代码是绘制一个矩形,通过np.zeros()创建一幅黑色图像,接着调用cv2.rectangle()绘制矩形...cv2.circle(img, (100,100), 50, (255,255,0), -1) ---- 4.绘制椭圆 在OpenCV中,绘制椭圆比较复杂,要多输入几个参数,如中心点的位置坐标,长轴和短轴的长度...– center表示椭圆圆心坐标 – axes表示轴的长度(短半径和长半径) – angle表示偏转的角度(逆时针旋转) – startAngle表示圆弧起始角的角度(逆时针旋转) – endAngle...表示圆弧终结角的角度(逆时针旋转) – color表示线条的颜色 – thickness如果为正值,表示椭圆轮廓的厚度;负值表示要绘制一个填充椭圆 – lineType表示圆的边界类型 – shift表示中心坐标和轴值中的小数位数...---- 5.绘制多边形 在OpenCV中,调用cv2.polylines()函数绘制多边形,它需要指定每个顶点的坐标,通过这些点构建多边形,其函数原型如下所示: img = polylines(img

    2.4K20

    OpenCV基础

    OpenCV被广泛应用于面部识别、物体识别、运动跟踪、机器人视觉以及许多其他的计算机视觉应用中。...以下是OpenCV-Python的一些详细介绍: 接口封装:OpenCV-Python是OpenCV库C++实现的Python包装器。...这意味着OpenCV-Python是对C++版本的OpenCV进行了Python风格的封装,使得Python开发者能够轻松地调用OpenCV的功能。...它将矩形映射为平行四边形,即变换后各边仍然平行。 图像的仿射变换涉及到图像的形状位置角度的变化,是深度学习预处理中常到的功能,仿射变换主要是对图像的缩放,旋转,翻转和平移等操作的组合。...透视变换适用于需要模拟三维空间中视角变化的场合,如在计算机视觉中的相机校准、三维重建等,利用透视中心、像点、目标点三点共线的条件,按透视旋转定律使透视面透视轴旋转某一角度,破坏原有的投影光线束,仍能保持承影面上投影几何图形不变的变换

    11410

    用opencv的dnn模块做yolov5目标检测

    部署yolov5检测车牌和4个角点,包含C++和Python两个版本的程序 使用ONNXRuntime部署yolov5检测车牌和4个角点,包含C++和Python两个版本的程序 程序会输出车牌的水平矩形框的左上和右下顶点的坐标...部署yolov5旋转目标检测,包含C++和Python两个版本的程序 使用ONNXRuntime部署yolov5旋转目标检测,包含C++和Python两个版本的程序 程序输出矩形框的中心点坐标(x, y.../yolov5_pose_opencv 5月3日,我在github发布了分别使用OpenCV,ONNXRuntime部署yolov5旋转目标检测,包含C++和Python两个版本的程序,程序输出矩形框的中心点坐标...对于不规则四边形目标检测,之前在1月28日的时候发布过yolov5检测车牌和4个角点,但那时候程序输出的车牌的水平矩形框的左上和右下顶点的坐标(x,y),车牌的4个角点的坐标(x,y)。...而在一些项目里,需要只输出不规则四边形的4个角点的坐标,不需要输出水平矩形框。这样做不仅能减少模型的分枝数,还能减少计算量。

    2.3K10

    使用Python和OpenCV顺时针排序坐标

    前言 本文我认为我翻译的并不太成功,因为原文光头哥就写的很啰嗦,大概理顺一下思路就是: 光头哥想写一个把识别物体用矩形框起来,并将矩形四个顶点按左上,右上,右下,左下的顺序来排列,他之前写了一个排序算法...这篇博文的主要目的是学习如何按左上、右上、右下和左下顺序排列矩形四个顶点。按照这样的顺序排列顶点是执行诸如透视变换或匹配对象角点(例如计算对象之间的距离)等操作的先决条件。...选择错误的索引意味着我们从pts列表中选择了错误的点。如果我们从pts中取出错误的点,那么左上角,右上角,右下角和左下角顺序排列就会被破坏。 那么我们如何解决这个问题并确保它不会发生呢?...使用左上点作为锚点,我们可以应用勾股定理计算左上点和最右点之间的欧式距离。根据三角形的定义,斜边是直角三角形最大的边。...否则,第8-11行处理计算轮廓的旋转包围框(注意使用cv2.cv.BoxPoints)[如果使用的是OpenCV 2.4]或cv2.boxPoints[如果我们使用OpenCV 3]),并在图像上绘制轮廓

    1.8K20

    Python用Pillow(PIL)进行简单的图像操作

    專 欄 ❈ sunhaiyu,Python中文社区专栏作者 专栏地址: http://www.jianshu.com/u/4943cb2c6ea4 ❈ Python用Pillow(PIL)进行简单的图像操作...在Pillow中如何使用上述定义的坐标系表示一块矩形区域?许多函数或方法要求提供一个矩形元组参数。元组参数包含四个值,分别代表矩形四条边的距离X轴或者Y轴的距离。顺序是(左,顶,右,底)。...由上到下,分别是旋转了90°,180°, 270°、普通的20°,加了参数expand=True旋转的20°。...expand放大了图像尺寸(变成了2174x1672),使得边角的图像不被裁剪(四个角刚好贴着图像边缘)。再看旋转90°、270°时候图像被裁剪了,但是如下查看图像的宽高,确是和原图一样,搞不懂。...专业人士使用opencv是更好地选择。Python中使用import cv2开始使用吧!

    2.7K100

    熟练掌握CV中最基础的概念:图像特征,看这篇万字的长文就够了

    目录 1,图像特征 2,角点特征 3,使用OpenCV和PIL进行特征提取和可视化 4,特征匹配 5,图像拼接 图像特征 什么是图像特征? | 特征 ·对图像进行描述。 ·指出图像中的相关信息。...| 特征不变性 ·伸缩 ·旋转 ·转换 ·透视法 ·仿射 ·颜色 ·照度 角点特征 ·角:定义为两条边的交点。·关键点:图像中具有明确位置且可以可靠检测的点。 | 适用范围 ·运动检测和视频跟踪。...只有特征值可以用来检查像素是否是角点。 ·这些角点是对harris角点的一次升级。...HoG特征对图像中物体的旋转很敏感。...剔除非关键点 给关键点分配一个方向。 生成最终的SIFT特征—为缩放和旋转不变性生成一个新的表示。 使用OpenCV实现SIFT ''' NOTE: Patented work.

    3.9K20
    领券