opencv-python中 boundingRect(cnt)以及cv2.rectangle用法
转自 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用法相关推荐
- opencv python 中cv2.putText()函数的用法
opencv python 中cv2.putText()函数的用法 文章目录: 一.快速使用 二.官方文档 三.使用举例 虽然用啦很多次,还是决定记录一下 一.快速使用 cv2.putText(ima ...
- 为什么OpenCV3在Python中导入名称是cv2
我们来看一下: import cv3 print(cv3.__version__) 输出报错: Traceback (most recent call last):ImportError: No mo ...
- python中关于try,expect的用法
python中关于try,expect的用法 try: code except Error1 as e: #处理Error1异常 print(e) 上式说明,运行code,如果code恰巧出现了Err ...
- Python中yield和yield from的用法
yield 后面接的是 future 对象 调用方 委托生成器 yield from 直接给出循环后的结果 yield from 委托者和子生成器直接通信 yield from 直接处理stopIte ...
- python中list[1啥意思_详解Python中list[::-1]的几种用法
本文主要介绍了Python中list[::-1]的几种用法,分享给大家,具体如下: s = "abcde" list的[]中有三个参数,用冒号分割 list[param1:para ...
- python中os.path.join()的循环用法_Python中.join()和os.path.join()两个函数的用法详解
Python中有.join()和os.path.join()两个函数,具体作用如下: . join(): 连接字符串数组.将字符串.元组.列表中的元素以指定的字符(分隔符)连接生成一个新的字符串 ...
- python items函数用法,Python中dictionary items()系列函数的用法实例
本文实例讲述了Python中dictionary items()系列函数的用法,对Python程序设计有很好的参考借鉴价值.具体分析如下: 先来看一个示例: import html # availab ...
- python enumerate函数_关于python中enumerate和zip函数的用法及举例
关于python中enumerate和zip函数的用法及举例 关于enumerate函数: enumerate函数可以同时返回列表或元组等可迭代对象的下标和内容,但实际上,enumerate函数实际返 ...
- python中all()和any()函数的用法
python中all()和any()函数的用法 若判断两个数组相等,all()函数表示的是数组中所有数都要相等才输出TRUE,any()函数则是只要有一个数相等则就输出TRUE.如下代码所示: imp ...
最新文章
- 技术12期:如何设计rowkey使hbase更快更好用【大数据-全解析】
- kafka命令行操作
- php cdi_Quarkus的其他(非标准)CDI功能
- java 网页正文抽取算法_网页正文抽取算法 ContentExtractor
- K8S专题-dashboardUI组件2
- a span等行内元素加margin属性后无效果解决方案
- 轻松实现Web数据库的安全
- base64位 解码图片
- 免费的客户订单及商品管理系统
- 图像特征提取三大法宝:HOG特征,LBP特征,Haar特征
- 统计学之三大相关性系数简介(pearson、spearman、kendall)
- Kubernetes原生api部署微服务5-监听Pod
- Efficient Methods for Natural Language Processing: A Survey自然语言处理有效方法综述
- 动态规划(Dynamic Programming)
- 2022-09-15 mysql列存储引擎-语法树转换
- java案例之制作系统
- python输出字符的ascii码_如何获取一个字符的ASCII码
- 马云卸任CEO演讲:明天起生活将是我的工作
- 真正的模块化编程原来是这样的!
- [Windows] 4k对齐(无损对齐) [ 技术分享 ]
热门文章
- 【CTSC2016】时空旅行
- 图像校正(Image Rectification)——使得在对极线上寻找对应点更加容易
- 【五】 C语言基础知识学习回顾 | 一篇搞定C语言基础 | 内附详细代码以及注释
- <JVM下篇:性能监控与调优篇>03-JVM监控及诊断工具-GUI篇
- 接口调用成功,功能实现但是返回404报错
- EChat(简易聊天项目)一、登录注册实现
- ZOJ 3426 HDU 3719 Snooker Referee
- cura同时打印多个东西,cura同时打开多个模型,cura打开多个stl
- Uber 时序数据库M3DB初探
- 总结常用损失函数的基本形式、原理及特点