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

[OpenCV]如何将轮廓固定为矩形?

在OpenCV中,可以使用boundingRect()函数将轮廓固定为矩形。boundingRect()函数可以计算出轮廓的最小外接矩形,该矩形的边与轮廓的边平行。

以下是使用boundingRect()函数将轮廓固定为矩形的步骤:

  1. 首先,确保已经找到了轮廓。可以使用findContours()函数找到图像中的轮廓。
  2. 然后,使用boundingRect()函数计算轮廓的最小外接矩形。该函数需要传入一个轮廓作为参数,并返回一个矩形对象。
  3. 最后,可以使用矩形对象的属性来获取矩形的位置、宽度和高度等信息。

下面是一个示例代码:

代码语言:txt
复制
import cv2

# 读取图像并转为灰度图像
image = cv2.imread('image.jpg')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 找到轮廓
contours, _ = cv2.findContours(gray, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

# 遍历轮廓
for contour in contours:
    # 计算最小外接矩形
    x, y, w, h = cv2.boundingRect(contour)
    
    # 绘制矩形
    cv2.rectangle(image, (x, y), (x + w, y + h), (0, 255, 0), 2)

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

在上述代码中,首先读取图像并将其转换为灰度图像。然后使用findContours()函数找到图像中的轮廓。接下来,遍历每个轮廓,并使用boundingRect()函数计算最小外接矩形的位置和尺寸。最后,使用rectangle()函数绘制矩形,并显示结果图像。

推荐的腾讯云相关产品:腾讯云图像处理(Image Processing)服务,该服务提供了丰富的图像处理功能,包括轮廓检测、图像识别等。您可以通过以下链接了解更多信息:腾讯云图像处理

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

相关·内容

opencv: 绘制矩形轮廓框,并记录轮廓框坐标

步骤简述 使用OpenCV绘制矩形轮廓框,一般包括如下步骤: 转换为灰度图; 进行阈值处理; 进行中值滤波; 在原始图像上绘制矩形框。...附图解析 原始图像: 第一步,转换为灰度图: 第二步,经过阈值处理: 第三步,中值滤波后: 最后一步,在原始图像上绘制矩形框: 生成的记录文件(矩形轮廓框四个端点的平面坐标.../origin.jpg') # 文档路径,用于记录轮廓框坐标 txt_file = open('....threshold(src=pic, thresh=200, maxval=255, type=1) # 中值滤波,去除椒盐噪声 pic = cv2.medianBlur(pic, 5) # 边缘检测,得到的轮廓列表..._1, contours, _2 = cv2.findContours(pic, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) # 根据轮廓列表,循环在原始图像上绘制矩形边界

3.4K30

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

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

2.4K20

实战 | OpenCV如何将不同轮廓合并成一个轮廓(附源码)

导读 本文主要介绍如何用OpenCV将不同的轮廓合并成一个轮廓的实现方法和代码演示。...背景介绍 在图像处理的应用场景中常常会遇到一种情况,本来是一个整体的目标,因为不同的亮度或其他原因导致它分割成多个部分,这种情况在用OpenCV处理的时候会被当成多个轮廓(如下图所示),那么遇到这种情况...实现方法与步骤 这里我们不用上面的绘画图,而是使用下面这张图做演示: 我们的目的:将上图中的文字轮廓看成一个整体,然后求其最小外接矩形,获得角度,将文字旋转水平,后续可以做简单的文字识别。...THRESH_BINARY) 【2】中值滤波去除小杂讯 blurImg = cv2.medianBlur(thresImg,5) cv2.imshow('blur', blurImg) 【3】查找轮廓计算轮廓最小外接矩形...np.int0(box) split_res = cv2.drawContours(split_res,[box],0,(0,0,255),2) merge_list.append(cnt) 【4】轮廓合并成一个绘制最小外接矩形

5.9K31

视频追踪之目标选择(一)------边缘检测值函数准备

更多的是需要用户绘制出跟踪目标的外接矩形或者外接圆,显然,这样显然会消耗比较长的时间,通常情况下是不可容忍的。所以利用边缘检测可以将矩形绘制简化为鼠标单击。...第三个参数为输出参数,这个参数将指向用来存储轮廓信息的链表表头,这是很重要的东西,后期就用这个来分析边缘,从而实现矩形的自动绘制。...1.3下面就介绍OpenCV中对图像进行二值化的关键函数——cvThreshold()。...第三个参数表示阈值,阈值的确定也有很多算法,但是方便起见,我们在程序中固定为100,以后有时间可专门写一篇讨论。 第四个参数表示最大值。 第五个参数表示运算方法。...在OpenCV的imgproc\types_c.h中可以找到运算方法的定义。

53950

opencv 实现特定颜色线条提取与定位操作

.CHAIN_APPROX_SIMPLE压缩水平方向,垂直方向,对角线方向的元素,只保留该方向的终点坐标,例如一个矩形轮廓只需4个点来保存轮廓信息 cv2.CHAIN_APPROX_TC89_L1,CV_CHAIN_APPROX_TC89...对于轮廓是以坐标的形式返回,可以通过函数cv2.drawContours()绘制出轮廓 绘制矩形区域对轮廓进行定位 主要代码如下: import numpy as np import cv2 import.../mark1' # image = os.listdir(image_file) save_image = os.path.join(savefile, image) #设定颜色HSV范围,假定为红色...为矩阵的宽和高 boxes = [cv2.boundingRect(c) for c in contours] for box in boxes: x, y, w, h = box #绘制矩形框对轮廓进行定位...以上这篇opencv 实现特定颜色线条提取与定位操作就是小编分享给大家的全部内容了,希望能给大家一个参考。

4K10

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

(0)轮廓分析概述及作用 通过将Canny边缘提取或者二值化结果作为输入图像来实现轮廓发现与绘制, 可是这些并不是我们想要的最终结果, 我们一般根据获取到的轮廓求出它们的外接矩形或者最小外接矩形...调用该API会返回一个Rect对象实例,它是OpenCV关于矩形的数据结构, 从中可以得到外界矩形(边界框)的宽高, 然后就可以计算出轮廓的横纵比了。...(2)最小边界框 与上面边界框不同的是, 获取到的最小边界框有时候不是一个水平或者垂直的矩形, 而是一个旋转了一定角度的矩形, 但是最小外接矩形(最小边界框)能够更加真实地反映出轮廓的几何结构大小,...调用该API会返回一个RotatedRect对象实例, 它是OpenCV关于旋转矩形的数据结构, 其包含了旋转角度,矩形的宽、高及四个顶点等信息, 通过相关的API都可以查询获得, 绘制旋转矩形对象的时候..., 首先需要得到四个顶点, 然后通过OpenCV绘制直线的API来完成旋转矩形的绘制。

1.4K20

基于OpenCV实战:车牌检测

转换为灰度不仅可以减少计算复杂性,而且对于查找轮廓(稍后的步骤)也很重要,因为OpenCV可以从黑色背景中的白色连接对象中查找轮廓。 ? 调整大小并转换为灰度后的图像: ?...要将这个想法应用到Python,我们首先将OpenCV findContours函数应用到图4上以查找所有闭合轮廓。...然后,为了可视化它们,我们应用了drawContours函数将轮廓绘制到原始图像上。 ? ? 如图6所示,它具有许多轮廓,其中大多数轮廓形状不正确或没有被认为是矩形的区域。...因此,我们将根据其面积对轮廓进行排序,并根据其面积过滤轮廓。最后,我们将再次使用drawContour函数显示过滤后的轮廓。 ? ? 接下来,找到最适合车牌的形状,即矩形。...4.找到矩形后,该形状内的信息将为车牌号。 找到正确的轮廓后,我们需要从该轮廓中提取文本。为此,我们将使用Pytesseract。

1.5K20

OpenCV: 分水岭算法的图像分割及Grabcut算法交互式前景提取

用一种颜色(或强度)标记我们确定为前景或对象的区域,用另一种颜色标记我们确定为背景或非对象的区域,最后用0标记我们不确定的区域。 这是我们的标记。然后应用分水岭算法。...剩下,肯定为背景的区域显示在较浅的蓝色,跟未知区域相比。 现在标记已准备就绪。到了最后一步的时候了,使用分水岭算法。然后标记图像将被修改,边界区域将标记为-1。...在执行分水岭函数watershed之前,必须对第二个参数markers进行处理,它应该包含不同区域的轮廓,每个轮廓有一个自己唯一的编号,轮廓的定位可以通过Opencv中findContours方法实现,...此矩形之外的所有内容都将被视为确定的背景(这就是之前提到的矩形应包含所有对象的原因)。矩形内的一切都是未知的。类似地,任何指定前景和背景的用户输入都被视为硬标签,这意味着它们不会在过程中发生变化。...OpenCV 有函数cv2.grabCut() 。

54420

VC++中使用OpenCV进行形状和轮廓检测

VC++中使用OpenCV进行形状和轮廓检测 在VC++中使用OpenCV进行形状和轮廓检测,轮廓是形状分析以及物体检测和识别的有用工具。...如下面的图像中Shapes.png中有三角形、矩形、正方形、圆形等,我们如何去区分不同的形状,并且根据轮廓进行检测呢?...),消除噪声;计算轮廓周长(封闭的或者非封闭的)或曲线长度,以指定精度逼近多边形曲线,计算顶点集合或灰度图像的非零像素的右上边界矩形,获取边界包围盒;然后轮廓多边形的角落(顶点)个数objCor,根据objCor...判断轮廓多边形的形状类型,特别注意矩形和正方形的区别,我们根据轮廓的宽高比来区分,当轮廓宽高比大于0.95或者小于1.05时我们可以认定轮廓为正方形 4、最后我们在第三步基础上,绘制轮廓或填充轮廓,颜色为粉色... #include #include using namespace cv; using

6400

OpenCV | 二值图像分析的技巧都在这里

轮廓属性 二值图像分析最常见的一个主要方式就是轮廓发现与轮廓分析,其中轮廓发现的目的是为轮廓分析做准备,经过轮廓分析我们可以得到轮廓各种有用的属性信息、常见的如下: 轮廓面积 轮廓周长 轮廓几何矩 轮廓的最小外接矩形...轮廓的最大外接矩形 轮廓的最小外接圆 轮廓的最小外接三角形 轮廓拟合(支持拟合直线、椭圆、圆) 轮廓的凸包 轮廓层次信息提取 多边形逼近 计算欧拉数 函数介绍 OpenCV中提供大量轮廓分析函数,通过这些函数我们可以方便快捷的得到轮廓的各种有用属性信息...OpenCV轮廓发现函数如下: void cv::findContours( InputArray image, OutputArrayOfArrays contours, OutputArray...综合运用代码演示 2020年 以前我分享过一些综合使用的例子,列表如下(都看过你就赢了): 二值图像分析案例精选 OpenCV二值图像案例分析精选 | 第二期 OpenCV轮廓层次分析实现欧拉数计算...OpenCV寻找复杂背景下物体的轮廓 如何识别出轮廓准确的长和宽 OpenCV中几何形状识别与测量 OpenCV中BLOB特征提取与几何形状分类 OpenCV直线拟合检测 OpenCV中实现曲线与圆拟合

1.8K30

Python OpenCV查找图中的四边形矩形

实例来源于OpenCV自带历程,这里以OpenCV4.2为例,路径为: F:\opencv4.2_release\opencv\sources\samples\python\squares.py...目标是找到下图中的矩形轮廓和四边形轮廓: ?...矩形的检测包含检测轮廓是四个顶点,同时两条边的夹角接近90°,代码和效果如下: import numpy as np import cv2 as cv # 设置putText函数字体 font=cv.FONT_HERSHEY_SIMPLEX...代码比较简单,核心步骤上面已添加注释,筛选条件自己可以改,如果只想检测四边形,不限制为矩形,则修改如下地方: # 只检测矩形(cos90° = 0) if max_cos < 0.1: # 检测四边形...大家使用的时候根据具体情况进行修改,C++的demo路径如下: F:\opencv4.2_release\opencv\sources\samples\cpp\squares.cpp

15.6K41

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

OpenCV利用findContours找到图像中的轮廓,根据这些轮廓的特征进行筛选有利于进一步逼近最终的兴趣区域,减少其他算法的时间,提高代码的运行效率,而对轮廓的绘图则可以直观的看到筛选结果。...轮廓尺寸 尺寸这个词并不准确,其实是轮廓的size,也就是把轮廓围起来的点的个数,我们都知道OpenCV中的一个轮廓其实是点的合集,所以如果一个轮廓在图像上的相对大,那么他的点的个数也就相应的会变多...); 可见,它的参数只有二维的点集做输入,而函数的类型为RotatedRect ,RotatedRect 为OpenCV中的一个常用数据类型——可旋转的2D矩形。...轮廓的外接矩形 外接矩形和外接椭圆的用法差不多: OpenCV利用boundingRect()函数创建轮廓(二维点集)的外接矩形,该函数的定义: CV_EXPORTS_W Rect boundingRect...( InputArray points ); 可见,它的参数只有二维的点集做输入,而函数的类型为Rect ,Rect 为OpenCV中的一个另一个常用数据类型——2D直正矩形类。

4.5K61

图像处理智能化的探索:文字区块识别

= cv2.meanStdDev(img) 通过一些样本的统计,一般均值在200以上,方差在40以内,可以判定为图像泛白,文字过多的可能性很大。...这个时候,万能的OpenCV又站了出来,他表示:我认识一对好基友——膨胀和腐蚀,他们就是干这个的。...好吧,还是有一些图片中的轮廓混进来了。通过观察,我们发现这些轮廓相比文字区块是很不规则的,有句话叫以己之长攻彼之弱,我们就用文字区块这个特点来排除掉不规则的轮廓。...利用OpenCV的minAreaRect方法,我们可以得到一块区域的像素点集中包含的最小面积的矩形。其中文字区块包含的矩形通常连成一片,相较其他轮廓更细长。...因此我们通过内含矩形的长宽比则可以筛选出文字区块: # 记录文字区块数量 area_text_num = 0 region = [] # 根据边缘连接得到所有轮廓 contours, hierarchy

4.2K30

基于OpenCV的数字识别系统

OpenCV是用于计算机视觉应用程序的流行的跨平台库。它包括各种图像处理实用程序以及某些机器学习功能。...将图像设置为阈值后,可以使用OpenCV的findContours方法查找图像中连接了白色像素部分的区域。绘制轮廓后,便可以裁剪出这些区域并确定它们是否可能是数字以及它是什么数字。...3.扔掉任何不是正方形或高矩形的东西。 4.使轮廓与某些长宽比匹配。LCD显示屏中的十个数字中有九个数字的长宽比类似于下面的蓝色框高光之一。该规则的例外是数字“ 1”,其长宽比略有不同。...通过使用一些样本轮廓,我将0–9!1方面确定为0.6,将1方面确定为0.3。它将使用这些比率和+/-缓冲区来确定轮廓是否是我们想要的东西,并收集这些轮廓。...蓝色矩形显示我们的数字/十进制,红色被忽略 预测 有两个等高线轮廓,一个带潜在位数,一个带潜在小数位,我们可以使用这些轮廓边界裁剪图像,并将其输入经过训练的系统中以预测其值。

1.2K20

【干货】C++ OpenCV案例实战---卡片截取(附代码

前言 我们已经更新了不少OpenCV的基础文章了,为了巩固一下学习效果,我们就做的小案例的实战进行强化。 实现效果 今天我照了一张自己健身卡的图片,然后想到实现整体切边的效果,先上一下源图 ?...代码演示 我们再新建一个项目名为opencv--qiebian,按照配置属性(VS2017配置OpenCV通用属性),然后在源文件写入#include和main方法. ?...可以看出,我们要找到矩形完全不是我们想要的结果,在红色的轮廓里面发现卡片和桌面上的纹理连到一起了,说明我们在Canny边缘提取的时候需要进行二值化处理,去掉一些不用的结果 ---- 第五步 对源图像进行...右边就是我们完美截取的卡片图像,成功~~~~ ---- 总结一下实现流程 加载图片 转为灰度图 图像高斯模糊 进行闭操作(先膨胀后腐蚀) Canny边缘提取 寻找轮廓 轮廓中查找符合要求的项 获取上一步中对应项的最小矩形...从源图像中截取最小矩形生成新图片 以上是我自己实验生成的效果,如果有更好的方法请消息我,毕竟我也是初学者~~ ---- main单元代码 #include

2.5K20

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

前言 本文主要介绍如何使用OpenCV剪切图像中的圆形和矩形。 准备工作 首先创建一个Wpf项目——WpfOpenCV,这里版本使用Framework4.7.2。...使用OPenCV剪切矩形 现在,我们进入项目,进行OPenCV的调用。...然后,我们就可以在图片里查找图形轮廓了,当轮廓有三个顶点,那么它是三角形,如果有四个顶点,那么它是四边形;我们要截取矩形,所以这里要加一个角度的判断,四个角必须都在80-100度之间。...下面是截取矩形的代码,代码中只截取了宽度最大的那个矩形。...图中红线为检测到矩形后,手动画上去的矩形轮廓。 使用OPenCV剪切圆形 编写矩形剪切函数——CutCircleImage。 函数里,我们依然先将图像进行缩放,为了有效的减少检测到的圆形数量。

3.5K11

【干货】C++ OpenCV案例实战---卡片截取(旋转取卡)

前言 前面一章《【干货】C++ OpenCV案例实战---卡片截取(附代码)》我们通过实战练习了怎么截取卡片信息,但是如果遇到了图片中卡片不是正方向的话我们就截取不了,这一篇我们在上面的基础上研究一下卡片的旋转截取...代码演示 我们再新建一个项目名为opencv--qiebian2,按照配置属性(VS2017配置OpenCV通用属性),然后在源文件写入#include和main方法. ?...先是闭操作,寻找轮廓等,下面就是我们的重点 ---- 获取最大矩形 首先要查找轮廓内最大的长度和高度的矩形,用于判断是不是我们要找的卡片,把最大的宽度和高度记录在了maxw和maxh两个变量里面 ?...---- 定位最大矩形进行旋转 我们这里需要重新再遍历一次,找到我们刚才获取到的最大矩形进行旋转处理 ? ? 上面标红框的是因为我原来的图片是手机拍后横向旋转过的,需要再增加90度进行处理。...---- 在新的图片中重新走一遍寻找图片的流程 加载图片 转为灰度图 图像高斯模糊 进行闭操作(先膨胀后腐蚀) Canny边缘提取 寻找轮廓 轮廓中查找符合要求的项 获取上一步中对应项的最小矩形 从源图像中截取最小矩形生成新图片

93040

OpenCV入门之九】轮廓查找和多边形包围轮廓

OpenCV中有一个很强大的函数,它可以从二值图像中找到轮廓:findContours函数。 有时我们还需要把找到的轮廓画出来,那就要用到函数drawContours了。...使用多边形把轮廓包围 在实际应用中,常常会有将检测到的轮廓用多边形表示出来的需求。比如在一个全家福中,我想用一个矩形框将我自己的头像框出来,这样就需要这方面的知识了。...OpenCv这方面的函数总结如下: 返回指定点集最外部矩形边界:boundingRect() 寻找给定的点集可旋转的最小包围矩形:minAreaRect() 寻找最小包围圆形:minEnclosingCircle...、圆形、矩形框出来了。...OpenCV提供了一些函数来计算图像的矩: 矩的重心、主轴、面积等特征计算:moments() 计算轮廓面积:contourArea() 计算轮廓长度:arcLength() 下面的程序,使用了两种方法计算轮廓面积

1.6K20
领券