转自  http://blog.csdn.net/zhangxb35/article/details/47275277

矩形边框(Bounding Rectangle)是说,用一个最小的矩形,把找到的形状包起来。还有一个带旋转的矩形,面积会更小,效果见下图

上代码

首先介绍下cv2.boundingRect(cnt)这个函数

这个函数很简单,cnt是一个轮廓点集合,也就是它的参数,可以通过cv2.findContours获取;

返回四个值,分别是x,y,w,h;

x,y是矩阵左上点的坐标,w,h是矩阵的宽和高

bgr_img = cv2.imread("./demo.jpeg")
gray_img = cv2.cvtColor(bgr_img, cv2.COLOR_BGR2GRAY)
th, binary = cv2.threshold(gray_img, 0, 255, cv2.THRESH_OTSU)
contours, hierarchy = cv2.findContours(binary, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
cv2.drawContours(bgr_img, contours, -1, (0, 0, 255), 3)bounding_boxes = [cv2.boundingRect(cnt) for cnt in contours]for bbox in bounding_boxes:[x , y, w, h] = bboxcv2.rectangle(bgr_img, (x, y), (x + w, y + h), (0, 255, 0), 2)cv2.imshow("name", bgr_img)
cv2.waitKey(0)

然后利用cv2.rectangle(img, (x,y), (x+w,y+h), (0,255,0), 2)画出矩行

参数解释

第一个参数:img是原图

第二个参数:(x,y)是矩阵的左上点坐标

第三个参数:(x+w,y+h)是矩阵的右下点坐标

第四个参数:(0,255,0)是画线对应的rgb颜色

第五个参数:2是所画的线的宽度

# 用绿色(0, 255, 0)来画出最小的矩形框架
x, y, w, h = cv2.boundingRect(cnt)
cv2.rectangle(img, (x, y), (x+w, y+h), (0, 255, 0), 2)# 用红色表示有旋转角度的矩形框架
rect = cv2.minAreaRect(cnt)
box = cv2.cv.BoxPoints(rect)
box = np.int0(box)
cv2.drawContours(img, [box], 0, (0, 0, 255), 2)
cv2.imwrite('contours.png', img)

opencv-python中 boundingRect(cnt)以及cv2.rectangle用法相关推荐

  1. opencv python 中cv2.putText()函数的用法

    opencv python 中cv2.putText()函数的用法 文章目录: 一.快速使用 二.官方文档 三.使用举例 虽然用啦很多次,还是决定记录一下 一.快速使用 cv2.putText(ima ...

  2. 为什么OpenCV3在Python中导入名称是cv2

    我们来看一下: import cv3 print(cv3.__version__) 输出报错: Traceback (most recent call last):ImportError: No mo ...

  3. python中关于try,expect的用法

    python中关于try,expect的用法 try: code except Error1 as e: #处理Error1异常 print(e) 上式说明,运行code,如果code恰巧出现了Err ...

  4. Python中yield和yield from的用法

    yield 后面接的是 future 对象 调用方 委托生成器 yield from 直接给出循环后的结果 yield from 委托者和子生成器直接通信 yield from 直接处理stopIte ...

  5. python中list[1啥意思_详解Python中list[::-1]的几种用法

    本文主要介绍了Python中list[::-1]的几种用法,分享给大家,具体如下: s = "abcde" list的[]中有三个参数,用冒号分割 list[param1:para ...

  6. python中os.path.join()的循环用法_Python中.join()和os.path.join()两个函数的用法详解

    Python中有.join()和os.path.join()两个函数,具体作用如下: . join():    连接字符串数组.将字符串.元组.列表中的元素以指定的字符(分隔符)连接生成一个新的字符串 ...

  7. python items函数用法,Python中dictionary items()系列函数的用法实例

    本文实例讲述了Python中dictionary items()系列函数的用法,对Python程序设计有很好的参考借鉴价值.具体分析如下: 先来看一个示例: import html # availab ...

  8. python enumerate函数_关于python中enumerate和zip函数的用法及举例

    关于python中enumerate和zip函数的用法及举例 关于enumerate函数: enumerate函数可以同时返回列表或元组等可迭代对象的下标和内容,但实际上,enumerate函数实际返 ...

  9. python中all()和any()函数的用法

    python中all()和any()函数的用法 若判断两个数组相等,all()函数表示的是数组中所有数都要相等才输出TRUE,any()函数则是只要有一个数相等则就输出TRUE.如下代码所示: imp ...

最新文章

  1. 技术12期:如何设计rowkey使hbase更快更好用【大数据-全解析】
  2. kafka命令行操作
  3. php cdi_Quarkus的其他(非标准)CDI功能
  4. java 网页正文抽取算法_网页正文抽取算法 ContentExtractor
  5. K8S专题-dashboardUI组件2
  6. a span等行内元素加margin属性后无效果解决方案
  7. 轻松实现Web数据库的安全
  8. base64位 解码图片
  9. 免费的客户订单及商品管理系统
  10. 图像特征提取三大法宝:HOG特征,LBP特征,Haar特征
  11. 统计学之三大相关性系数简介(pearson、spearman、kendall)
  12. Kubernetes原生api部署微服务5-监听Pod
  13. Efficient Methods for Natural Language Processing: A Survey自然语言处理有效方法综述
  14. 动态规划(Dynamic Programming)
  15. 2022-09-15 mysql列存储引擎-语法树转换
  16. java案例之制作系统
  17. python输出字符的ascii码_如何获取一个字符的ASCII码
  18. 马云卸任CEO演讲:明天起生活将是我的工作
  19. 真正的模块化编程原来是这样的!
  20. [Windows] 4k对齐(无损对齐) [ 技术分享 ]

热门文章

  1. 【CTSC2016】时空旅行
  2. 图像校正(Image Rectification)——使得在对极线上寻找对应点更加容易
  3. 【五】 C语言基础知识学习回顾 | 一篇搞定C语言基础 | 内附详细代码以及注释
  4. <JVM下篇:性能监控与调优篇>03-JVM监控及诊断工具-GUI篇
  5. 接口调用成功,功能实现但是返回404报错
  6. EChat(简易聊天项目)一、登录注册实现
  7. ZOJ 3426 HDU 3719 Snooker Referee
  8. cura同时打印多个东西,cura同时打开多个模型,cura打开多个stl
  9. Uber 时序数据库M3DB初探
  10. 总结常用损失函数的基本形式、原理及特点