opencv python 图像轮廓/检测轮廓/绘制轮廓的方法


Posted in Python onJuly 03, 2019

图像的轮廓检测,如计算多边形外界、形状毕竟、计算感兴趣区域等。

Contours : Getting Started

轮廓

简单地解释为连接所有连续点(沿着边界)的曲线,具有相同的颜色或强度.
轮廓是形状分析和物体检测和识别的有用工具

NOTE

  • 为获得更好的准确性,请使用二值图,在找到轮廓之前,应用阈值法或canny边缘检测
  • 从OpenCV 3.2开始,findContours()不再修改源图像,而是将修改后的图像作为三个返回参数中的第一个返回
  • 在OpenCV中,查找轮廓是从黑色背景中查找白色对象

findContours(image, mode, method[, contours[, hierarchy[, offset]]])

  • image:原图像
  • mode:轮廓检索模式
  • method:轮廓近似方法

输出为: 修改后的图像,轮廓,层次结构

轮廓是所有轮廓的列表.每个单独的轮廓是对象边界点的坐标.

轮廓检索模式 含义
cv2.RETR_EXTERNAL 只检测外轮廓
cv2.RETR_LIST 提取所有轮廓并将其放入列表,不建立等级关系
cv2.RETR_CCOMP 建立两个等级的轮廓,上面的一层为外边界,里面的一层为内孔的边界信息。如果内孔内还有一个连通物体,这个物体的边界也在顶层
cv2.RETR_TREE 建立一个等级树结构的轮廓

轮廓逼近方法 含义
cv2.CHAIN_APPROX_NONE 存储所有的轮廓点,相邻的两个点的像素位置差不超过1,即max(abs(x1-x2),abs(y2-y1))==1
cv2.CHAIN_APPROX_SIMPLE 压缩水平方向,垂直方向,对角线方向的元素,只保留该方向的终点坐标,例如一个矩形轮廓只需4个点来保存轮廓信息
cv2.CHAIN_APPROX_TC89_L1 或 cv2.CHAIN_APPROX_TC89_KCOS 应用Teh-Chin链近似算法

代码:

import cv2
import numpy as np

img = cv2.imread('img.jpg')
imgray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
ret, thresh = cv2.threshold(imgray, 127, 255, 0)
im2, contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

绘制轮廓

cv2.drawContours(image, contours, contourIdx, color[, thickness[, lineType[, hierarchy[, maxLevel[, offset]]]]])

  • image:原图像
  • contours:作为Python列表传递的轮廓
  • contourIdx:轮廓索引(在绘制单个轮廓时很有用。绘制所有轮廓,传递-1)

要绘制图像中的所有轮廓:
cv.drawContours(img,contours,-1,(0,255,0),3)

要绘制单个轮廓,比如第4个轮廓:
cv.drawContours(img,contours,3,(0,255,0),3)

但大多数情况下,绘制第4个轮廓,以下方法将非常有用:
cnt = contours[4]
cv.drawContours(img,[cnt],0,(0,255,0),3)

代码:

import cv2
import numpy as np

img = cv2.imread('img7.png')
imgray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
ret, thresh = cv2.threshold(imgray, 127, 255, 0)
im2, contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
cnt = contours[0]
cv2.drawContours(img,[cnt],0,(0,255,0),3)

cv2.imshow('src',img)

cv2.waitKey()

opencv python 图像轮廓/检测轮廓/绘制轮廓的方法

opencv python 图像轮廓/检测轮廓/绘制轮廓的方法

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
跟老齐学Python之类的细节
Oct 13 Python
详解Python中的条件判断语句
May 14 Python
深入剖析Python的爬虫框架Scrapy的结构与运作流程
Jan 20 Python
python使用opencv读取图片的实例
Aug 17 Python
python os用法总结
Jun 08 Python
详解Python中的测试工具
Jun 09 Python
Python+AutoIt实现界面工具开发过程详解
Aug 07 Python
django admin管理工具自定义时间区间筛选器DateRangeFilter介绍
May 19 Python
keras Lambda自定义层实现数据的切片方式,Lambda传参数
Jun 11 Python
使用SimpleITK读取和保存NIfTI/DICOM文件实例
Jul 01 Python
Python 爬虫的原理
Jul 30 Python
python编程实现清理微信重复缓存文件
Nov 01 Python
在cmd中查看python的安装路径方法
Jul 03 #Python
python动态进度条的实现代码
Jul 03 #Python
OpenCV 轮廓检测的实现方法
Jul 03 #Python
python实现文本进度条 程序进度条 加载进度条 单行刷新功能
Jul 03 #Python
Python Pandas数据结构简单介绍
Jul 03 #Python
如何通过雪花算法用Python实现一个简单的发号器
Jul 03 #Python
Python实现个人微信号自动监控告警的示例
Jul 03 #Python
You might like
ZF框架实现发送邮件的方法
2015/12/03 PHP
java微信开发之上传下载多媒体文件
2016/06/24 PHP
PHP连接MySQL数据库的三种方式实例分析【mysql、mysqli、pdo】
2019/11/04 PHP
Laravel实现批量更新多条数据
2020/04/06 PHP
客户端静态页面玩分页
2006/06/26 Javascript
jQuery EasyUI API 中文文档 搜索框
2011/09/29 Javascript
jQuery事件绑定和委托实例
2014/11/25 Javascript
node.js中实现同步操作的3种实现方法
2014/12/05 Javascript
SWFObject基本用法实例分析
2015/07/20 Javascript
JavaScript+canvas实现七色板效果实例
2016/02/18 Javascript
改变checkbox默认选中状态及取值的实现代码
2016/05/26 Javascript
js图片放大镜实例讲解(必看篇)
2017/07/17 Javascript
JSX在render函数中的应用详解
2019/09/04 Javascript
浅谈layui 表单元素的选中问题
2019/10/25 Javascript
JS数组方法shift()、unshift()用法实例分析
2020/01/18 Javascript
通过vue刷新左侧菜单栏操作
2020/08/06 Javascript
解决vue项目,npm run build后,报路径错的问题
2020/08/13 Javascript
Python入门篇之正则表达式
2014/10/20 Python
python基础之入门必看操作
2017/07/26 Python
WxPython建立批量录入框窗口
2019/02/27 Python
如何更优雅地写python代码
2019/07/02 Python
通过python实现随机交换礼物程序详解
2019/07/10 Python
简单了解python PEP的一些知识
2019/07/13 Python
解决Keras 与 Tensorflow 版本之间的兼容性问题
2020/02/07 Python
pycharm工具连接mysql数据库失败问题
2020/04/01 Python
俄罗斯旅游网站:Tripadvisor俄罗斯
2017/03/21 全球购物
国贸专业个人求职信分享
2013/12/04 职场文书
粗加工管理制度
2014/02/04 职场文书
幼儿园教学随笔感言
2014/02/23 职场文书
物流管理专业毕业生自荐信
2014/03/04 职场文书
《地震中的父与子》教学反思
2014/04/10 职场文书
精神文明建设先进工作者事迹材料
2014/05/02 职场文书
知识竞赛拉拉队口号
2014/06/16 职场文书
幼儿教师辞职信
2015/02/27 职场文书
react中props 的使用及进行限制的方法
2021/04/28 Javascript
阿里云服务器Ubuntu 20.04上安装Odoo 15
2022/05/20 Servers