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

如何使用OpenCV绘制具有正确旋转角度的boundingRect?

OpenCV是一个开源的计算机视觉库,提供了丰富的图像处理和计算机视觉算法。要绘制具有正确旋转角度的boundingRect,可以按照以下步骤进行操作:

  1. 导入OpenCV库:在代码中导入OpenCV库,确保已正确安装和配置。
  2. 加载图像:使用OpenCV的函数加载图像,例如cv2.imread()。
  3. 图像预处理:根据需要对图像进行预处理,例如灰度化、二值化、滤波等。这取决于具体的应用场景。
  4. 检测轮廓:使用OpenCV的函数查找图像中的轮廓,例如cv2.findContours()。确保设置适当的参数以获取所有感兴趣的轮廓。
  5. 计算旋转矩形:对于每个轮廓,使用cv2.minAreaRect()函数计算最小外接矩形。该函数返回一个旋转矩形对象,其中包含矩形的中心坐标、宽度、高度和旋转角度。
  6. 绘制boundingRect:使用cv2.boxPoints()函数将旋转矩形转换为四个顶点坐标。然后,使用cv2.drawContours()函数绘制boundingRect。

以下是一个示例代码:

代码语言:txt
复制
import cv2

# 加载图像
image = cv2.imread('image.jpg')

# 灰度化
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 二值化
_, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)

# 查找轮廓
contours, _ = cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

# 绘制boundingRect
for contour in contours:
    # 计算旋转矩形
    rect = cv2.minAreaRect(contour)
    box = cv2.boxPoints(rect)
    box = np.int0(box)
    
    # 绘制boundingRect
    cv2.drawContours(image, [box], 0, (0, 255, 0), 2)

# 显示结果
cv2.imshow('Result', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这个示例中,我们首先加载图像,然后将其转换为灰度图像和二值图像。接下来,我们查找图像中的轮廓,并使用cv2.minAreaRect()计算每个轮廓的旋转矩形。最后,我们使用cv2.drawContours()函数绘制boundingRect。

请注意,这只是一个基本示例,具体的实现可能因应用场景和需求而有所不同。对于更复杂的图像,可能需要进行更多的预处理和参数调整。

推荐的腾讯云相关产品:腾讯云图像处理(https://cloud.tencent.com/product/tci)、腾讯云视觉智能(https://cloud.tencent.com/product/vision_ocr)。

希望这个答案能够帮助到您!

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【从零学习OpenCV 4】轮廓外接多边形

矩形是常见几何形状,矩形处理和分析方法也较为简单,OpenCV 4提供了两个函数求取轮廓外接矩形,分别是求取轮廓最大外接矩形boundingRect()函数和求取轮廓最小外接矩形minAreaRect...最小外接矩形四个边都与轮廓相交,该矩形旋转角度与轮廓形状有关,多数情况下矩形四个边不与图像两个轴平行。...2D点集合计算最小外接矩形,函数返回值是RotatedRect类型变量,含有矩形中心位置、矩形宽和高和矩形旋转角度。...RotatedRect类具有两个重要方法和属性,可以输出矩形四个顶点和中心坐标。...为了了解两个外接矩形函数使用方法,代码清单7-21中给出了提取轮廓外接矩形示例程序。

3.6K00

计算机视觉 OpenCV Android | 基本特征检测 之 轮廓分析

, 并计算外接矩形横纵比例、轮廓面积、周长等数据, 然后使用这些数据实现特定几何形状轮廓查找与过滤, 为后续处理与分析剔除不正确区域而保留候选对象。...通过轮廓点集合得到轮廓边界框API如下: boundingRect(MatOfPoint points) 其中,points是轮廓所有点集合对象。注意其数据类型。...(2)最小边界框 与上面边界框不同是, 获取到最小边界框有时候不是一个水平或者垂直矩形, 而是一个旋转了一定角度矩形, 但是最小外接矩形(最小边界框)能够更加真实地反映出轮廓几何结构大小,...调用该API会返回一个RotatedRect对象实例, 它是OpenCV关于旋转矩形数据结构, 其包含了旋转角度,矩形宽、高及四个顶点等信息, 通过相关API都可以查询获得, 绘制旋转矩形对象时候..., 首先需要得到四个顶点, 然后通过OpenCV绘制直线API来完成旋转矩形绘制

1.4K20

实战 | OpenCV绘制斜矩形并截取区域ROI保存(附代码)

导读 本文主要介绍如何OpenCV绘制斜矩形并将绘制区域ROI截取保存。 背景介绍 在图像处理中正矩形ROI方便绘制和截取,使用广泛。...但在某些情形中,目标本身是倾斜(或者带角度),这时候我们如何截取目标并保存呢?在OpenCV中我们可以使用RotateRect类和不规则ROI提取方法来实现。...实现步骤与演示 测试图像如下,假定我们要截取下面的IC器件: 【1】给定RotateRect中心坐标、角度、大小,然后获取旋转矩形端点坐标,通过画线方法绘制即可。...pts, npt, 1, Scalar(0, 0, 255), 8); //画填充多边形 imshow("mask", mask); imshow("fillRect", imgCopy); 【3】创建旋转矩形区域对应...bitwise_and提取不规则ROI: Mat result; bitwise_and(src, src, result, mask); imshow("ROI", result); 【5】获取旋转矩形正外界矩形

4.5K50

opencv 7 -- 边界矩形

有两类边界矩形 一、直边界矩形—boundingRect() 一个直矩形(就是没有旋转矩形)。它不会考虑对象是否旋转。 所以边界矩形面积不是最小。...可以使用函数 cv2.boundingRect() 查找得到 (x,y)为矩形左上角坐标,(w,h)是矩形宽和高 x,y,w,h = cv2.boundingRect(cnt) cv2.boundingRect...,长宽,旋转角度[-90,0),当矩形水平或竖直时均返回-90 最小外接矩形4个顶点顺序、中心坐标、宽度、高度、旋转角度(是度数形式,不是弧度数)对应关系如下: ?...注意:旋转角度θ是水平轴(x轴)逆时针旋转,与碰到矩形第一条边夹角。并且这个边边长是width,另一条边边长是height。...也就是说,在这里,width与height不是按照长短来定义opencv中,坐标系原点在左上角,相对于x轴,逆时针旋转角度为负,顺时针旋转角度为正。在这里,θ∈(-90度,0]

1.7K20

OpenCV 对轮廓绘图与筛选操作总结

轮廓外接椭圆 轮廓外接椭圆能够提供长短轴与角度信息,而长短轴比值使轮廓具有尺度不变特性。...); 可见,它参数只有二维点集做输入,而函数类型为RotatedRect ,RotatedRect 为OpenCV一个常用数据类型——可旋转2D矩形。...除此之外,我们还可以画出外接椭圆外接矩形,由于RotatedRect类提供了一个叫做boundingRect()成员函数(该函数声明在了RotatedRect类中,其实他是个Rect类型函数,也可以单独使用...,下面会具体提到这个函数),用于返回包含旋转矩形最小直正矩形,所以我们简单修改代码后,即可同时画出椭圆外接矩形: rectangle(SrcImage,rRect.boundingRect...轮廓外接矩形 外接矩形和外接椭圆用法差不多: OpenCV利用boundingRect()函数创建轮廓(二维点集)外接矩形,该函数定义: CV_EXPORTS_W Rect boundingRect

4.5K61

OpenCV实现人脸对齐

OpenCV实现人脸对齐 一:人脸对齐介绍 在人脸识别中有一个重要预处理步骤-人脸对齐,该操作可以大幅度提高人脸识别的准确率与稳定性,但是早期OpenCV版本不支持人脸Landmark检测,因此一般都是通过对人脸进行分割...,然后通过角点检测来寻找眼睛两个角点,连线之后根据它们有水平线角度旋转实现人脸对齐之后在提取人脸区域,OpenCV3.x版本开始支持获取Landmark数据,最常见Landmark数据就是人脸68...二:人脸对齐代码实现 基于OpenCV实现人脸对齐主要分为如下几步 1.人脸检测器定义与Landmark检测 OpenCV中通过HAAR或者LBP特征实现了人脸检测,最新OpenCV3.4基于残差网络也实现了人脸检测...,相关文章可以阅读: OpenCV基于残差网络实现人脸检测 详解LBP特征与应用(人脸识别) 有了人脸之后,我们就可以通过加载预训练Landmark检测模型,实现Landmark检测,这里使用模型是局部二值特征...完整程序代码如下: #include #include #include #include <iostream

4.2K50

C++ OpenCV轮廓周围矩形和圆形绘制

前面我们学习了轮廓提取,正常我们在提到到轮廓截取出来时一般需要是矩形图像,这次我们就来学习一下轮廓周围绘制矩形等。...:表示输出多边形是否封闭 ---- 矩形 boundingRect,得到轮廓周围最小矩形 Rect boundingRect(InputArray points) points 二维点集,点序列或向量...RotatedRect fitEllipse(InputArray points) points 二维点集,点序列或向量 RotatedRect参数:包含中心点坐标,以及矩形长度和宽度还有矩形偏转角度...---- 代码演示 新建一个项目opencv-0025,配置属性(VS2017配置OpenCV通用属性),然后在源文件写入#include和main方法 ?...操作步骤 将源图像变为二值图像 发现轮廓,找到图像轮廓 通过API找到轮廓点上最小包含矩形,圆,椭圆 绘制图像 ? ? ? 多边形拟合 ? 可旋转最小矩形 ? 最小矩形 ? 最小包围圆形 ?

2.4K20

opencv 9 -- 轮廓 性质

1 长宽比 边界矩形宽高比 x,y,w,h = cv2.boundingRect(cnt) aspect_ratio = float(w)/h 2 Extent 轮廓面积与边界矩形面积比 area...(cnt) 椭圆中心坐标,短轴长轴(也就是2b,2a),旋转角度 6 掩模和像素点 有时我们需要构成对象所有像素点,我们可以这样做 mask = np.zeros(imgray.shape,np.uint8...) # 这里一定要使用参数-1, 绘制填充轮廓 cv2.drawContours(mask,[cnt],0,255,-1) //方法一 bumpy方法 pixelpoints = np.transpose...(np.nonzero(mask)) //方法二 opencv方法 #pixelpoints = cv2.findNonZero(mask) 7 最大值和最小值及它们位置 我们可以使用掩模图像得到这些参数...min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(imgray,mask = mask) 8 平均颜色及平均灰度 我们也可以使用相同掩模求一个对象平均颜色或平均灰度

66730

如何识别出轮廓准确长和宽

显然是更符合实际情况,当然,叶柄这里产生了干扰,但那是另一个问题。 获得主方向后,下一步就是如何获得准确长和宽。...最后存在一个问题,那就是这样一个图像,已经知道p0-03坐标,和两条轴线斜率,如何绘制4个角点? ?...这里,黑色是原始OpenCV坐标系,红色是新求出来坐标系,你花了那么大功夫去算交点,实际上,不如将这个图像旋转为正,将外界矩形算出来,然后再反方向旋转回去。...这个函数是直接计算出某一个点在旋转后位置,采用是数学方法推到,应该算自己创函数。很多时候,我们并不需要旋转整个图像,而只是要获得图像旋转以后位置。...反思小结:应该说当时answerOpenCV上就给出了正确结果提示,但是由于那时我钻在自己算法里面,没能够接受新想法;过去一段时间后回顾,才发现了更好解决方法。

2K42

cv2.drawContours

1.1什么是轮廓 轮廓可以简单认为成连续点(连着边界)连在一起曲线,具有相同颜色或者灰度。轮廓在形状分析和物体检测和识别中很有用。为了准确,要使用二值化图像。...查找轮廓函数会修改原始图像。如果之后想继续使用原始图像,应该将原始图像储存到其他变量中。在OpenCV中,查找轮廓就像在黑色背景中超白色物体。你应该记住,要找物体应该是白色而背景应该是黑色。...可以使用函数cv2.boundingRect()查找得到#(x,y)为矩形左上角坐标,(w,h)是矩形宽和高x,y,w,h=cv2.boundingRect(cnt)img=cv2.rectangle...返回是一个Box2D结构,其中包含矩形最上角角点坐标(x,y)矩形宽和高(w,h)以及旋转角度。但是要绘制这个矩形需要矩形4个角点,可以通过函数cv2.boxPoints()获得。...2.9椭圆拟合 使用函数cv2.ellipse(),返回值其实就是旋转边界矩形内切圆。

3K10

Qt官方示例-拖放机器人

❝拖放机器人示例演示如何在QGraphicsItem子类中实现拖放,以及如何使用QtAnimation Framework动画化项目。❞ ?   ...我们将首先看Robot类,以了解如何组装不同部分,以便可以使用QPropertyAnimation分别旋转和动画化各个部分,然后我们将看ColorItem类,以演示如何在项目之间实现拖放。...出于性能方面的考虑,取决于所绘制内容复杂性,将头部绘制为图像通常比使用一系列矢量操作更快。...堆叠顺序非常重要,我们使用父子层次结构来确保元素旋转正确移动。我们首先构造躯干,因为这是根元素。然后,我们构造头部并将躯干传递给HeadItem构造函数。...我们还选择使用边界矩形更新来简化可视更新处理。该视图具有固定沙色背景和窗口标题。   最后,我们显示视图。控件进入事件循环后,动画立即开始。

4.7K41

OpenCV 轮廓 —— 轮廓分析

本文记录 OpenCV轮廓分析相关操作。 多边形逼近 当我们绘制一个多边形或进行形状分析时,通常需要使用多边形逼近一个轮廓,使顶点数变少。...该句型为正方向矩形(不能旋转) 计算点集或灰度图像非零像素右上边界矩形。...官方文档 函数使用 cv2.boundingRect( array ) -> retval 示例代码 contour = np.array([ [[0], [0]], [[10...而函数cv2.minAreaRect可以返回一个包围轮廓最小矩形,这个矩形很可能是倾斜。 查找包含输入 2D 点集最小区域旋转矩形。...reps, # 足够半径精度(坐标原点和直线之间距离)。 aeps[, # 角度精度,建议初始设置为 0.01 line] ) -> line # 输出行参数。

3.1K20

基于OpenCV特定区域提取

今天我们将一起探究如何使用OpenCV和Python从图像中提取感兴趣区域(ROI)。 在之间文章中,我们完成了图像边缘提取,例如从台球桌中提取桌边。...现在,我们可以使用OpenCV函数“ findContours()”提取该图像中轮廓,并仅选择具有以下属性轮廓: 1. 几何形状是圆形或椭圆形 2....对于第一部分,我们将使用OpenCVboundingRect()”检测每个轮廓边界矩形,并检查纵横比(高宽比)是否接近1。 现在我们任务已经完成,但还需要进行一些微调。...对于黑色背景,我们创建一个黑色画布,然后使用OpenCV函数“ bitwise_and()”以及先前获得蒙版在其上进行绘制。 ?...应当注意,在具有变化复杂度其他图像情况下,上面使用方法可以进行修改。

2.8K30

总结 | 基于OpenCV提取特定区域方法汇总

今天我们将一起探究如何使用OpenCV和Python从图像中提取感兴趣区域(ROI)。 在之间文章中,我们完成了图像边缘提取,例如从台球桌中提取桌边。...使用了简单OpenCV函数即可完成这项任务,例如inRange、findContours、boundingRect、minAreaRect、 minEnclosingCircle、circle、HoughLines...现在,我们可以使用OpenCV函数“ findContours()”提取该图像中轮廓,并仅选择具有以下属性轮廓: 1. 几何形状是圆形或椭圆形 2....对于第一部分,我们将使用OpenCVboundingRect()”检测每个轮廓边界矩形,并检查纵横比(高宽比)是否接近1。 现在我们任务已经完成,但还需要进行一些微调。...对于黑色背景,我们创建一个黑色画布,然后使用OpenCV函数“ bitwise_and()”以及先前获得蒙版在其上进行绘制。 ?

3.8K20

基于OpenCV实战:车牌检测

拥有思维导图或流程将引导我们朝着探索和寻找实现目标的正确道路方向发展。如果要给我一张图片,我们如何找到车牌并提取文字? 一般思维步骤: 识别输入数据是图像。...为了让Pytho n相应地处理输入数据,我们将导入适当库。我们将使用OpenCV(cv2)读取图像。...3.假定车牌是矩形,从与前面步骤不同所有形状中找出与矩形最匹配形状 当给人一张带有牌照图像时,我们眼睛就能从其他所有形状中找出牌照,因为我们先验知识告诉我们这是一个矩形形状,具有四个相连角...然后,为了可视化它们,我们应用了drawContours函数将轮廓绘制到原始图像上。 ? ? 如图6所示,它具有许多轮廓,其中大多数轮廓形状不正确或没有被认为是矩形区域。...找到后,我们将使用boundingRect函数来定位要裁剪角点。 ? ? ? 4.找到矩形后,该形状内信息将为车牌号。 找到正确轮廓后,我们需要从该轮廓中提取文本。

1.5K20

快速照片扫描方法记录

原图: 裁切后: 额外预留一些白边,总体效果还行。 程序用到了 python + opencv + numpy,基本可以满足我个人需求。...找出可包住上步面积最小方框 计算方框倾斜角度 根据方框倾斜角度矫正图片倾斜 计算旋转方框范围并切割图片 下面是我程序: import cv2 import numpy import os def...x, y, w, h = cv2.boundingRect(c) # 用绿色绘制方框 cv2.rectangle(img_debug,(x, y), (x + w, y + h...), (0, 255, 0), line_width) # 找出可包住面积最大区域最小方框 红色绘制 rect = cv2.minAreaRect(c) box = cv2....完成设置后点击确定就好 比较 Photoshop 自动化固然更加小白,但是我个人使用起来的话还是自己客制化程序更加好用(参数可以根据照片特征进行调整),裁切也较为准确 Photoshop在这种老照片裁切中还是存在切歪情况

49310
领券