python 基于opencv 绘制图像轮廓


Posted in Python onDecember 11, 2020

图像轮廓概念

轮廓是一系列相连的点组成的曲线,代表了物体的基本外形。
谈起轮廓不免想到边缘,它们确实很像。简单的说,轮廓是连续的,边缘并不全都连续(下图)。其实边缘主要是作为图像的特征使用,比如可以用边缘特征可以区分脸和手;而轮廓主要用来分析物体的形态,比如物体的周长和面积等,可以说边缘包括轮廓。

python 基于opencv 绘制图像轮廓

寻找轮廓的操作一般用于二值图像,所以通常会使用阈值分割或Canny边缘检测先得到二值图。

注意:寻找轮廓是针对白色物体的,一定要保证物体是白色,而背景是黑色,不然很多人在寻找轮廓时会找到图片最外面的一个框。

opencv找出图像轮廓

使用cv.findContours()寻找轮廓:

import cv2 as cv
import numpy as np

img = cv.imread('j.png')
img_gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
ret, thresh = cv.threshold(img_gray, 0, 255, cv.THRESH_BINARY_INV + cv.THRESH_OTSU)

# 寻找二值图像的轮廓
contours, hierarchy = cv.findContours(
  thresh, cv.RETR_TREE, cv.CHAIN_APPROX_SIMPLE)

print(len(contours))
  • 参数2:轮廓的查找方式,一般使用cv.RETR_TREE,表示提取所有的轮廓并建立轮廓间的层级。
  • 参数3:轮廓的近似方法。比如对于一条直线,我们可以存储该直线的所有像素点,也可以只存储起点和终点。使用cv.CHAIN_APPROX_SIMPLE就表示用尽可能少的像素点表示轮廓。
  • 简便起见,这两个参数也可以直接用真值3和2表示。
  • 函数有2个返回值,hierarchy是轮廓间的层级关系,这个不用理会。我们主要看contours,它就是找到的轮廓了,以链表形式存储,记录了每条轮廓的所有像素点的坐标(x,y)。

python 基于opencv 绘制图像轮廓

opencv绘制图像轮廓

轮廓找出来后,可以像图中那样用红色画出来:cv.drawContours()

cv.drawContours(img, contours, -1, (0, 0, 255), 2)
其中参数2就是得到的contours,参数3表示要绘制哪一条轮廓,-1表示绘制所有轮廓,参数4是颜色(B/G/R通道,所以(0,0,255)表示红色),参数5是线宽。

经验之谈:很多人画图时明明用了彩色,但没有效果,请检查你是在哪个图上画,画在灰度图和二值图上显然是没有彩色的。

一般情况下,我们会首先获得要操作的轮廓,再进行轮廓绘制及分析:
cnt = contours[1]
cv.drawContours(img, [cnt], 0, (0, 0, 255), 2)

实验:找出并绘制图像轮廓

import cv2 as cv
import numpy as np

img = cv.imread('jiao.jpg')
img_gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
ret, thresh = cv.threshold(img_gray, 0, 255, cv.THRESH_BINARY_INV + cv.THRESH_OTSU)

# 寻找二值图像的轮廓
contours, hierarchy = cv.findContours(
  thresh, cv.RETR_TREE, cv.CHAIN_APPROX_SIMPLE)
cnt = contours[1:6]

cv.drawContours(img, cnt, -1, (0, 0, 255), 2)

cv.imshow('result',img)
cv.waitKey(0)
cv.destroyAllWindows()

实验结果

python 基于opencv 绘制图像轮廓

以上就是python 基于opencv 绘制图像轮廓的详细内容,更多关于python 绘制图像轮廓的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python实现k均值算法示例(k均值聚类算法)
Mar 16 Python
使用Python编写一个模仿CPU工作的程序
Apr 16 Python
在python中使用正则表达式查找可嵌套字符串组
Oct 24 Python
Python标准模块--ContextManager上下文管理器的具体用法
Nov 27 Python
用Python配平化学方程式的方法
Jul 20 Python
Python操作MySQL数据库实例详解【安装、连接、增删改查等】
Jan 17 Python
Python内置方法和属性应用:反射和单例(推荐)
Jun 19 Python
Python基于Webhook实现github自动化部署
Nov 28 Python
用Python的绘图库(matplotlib)绘制小波能量谱
Apr 17 Python
Python爬虫之爬取二手房信息
Apr 27 Python
将Python代码打包成.exe可执行文件的完整步骤
May 12 Python
Python 内置函数速查表一览
Jun 02 Python
python通过cython加密代码
Dec 11 #Python
python 对象真假值的实例(哪些视为False)
Dec 11 #Python
Python排序函数的使用方法详解
Dec 11 #Python
Python数据分析库pandas高级接口dt的使用详解
Dec 11 #Python
python 自定义异常和主动抛出异常(raise)的操作
Dec 11 #Python
解决python 在for循环并且pop数组的时候会跳过某些元素的问题
Dec 11 #Python
基于Python中Remove函数的用法讨论
Dec 11 #Python
You might like
php中让上传的文件大小在上传前就受限制的两种解决方法
2013/06/24 PHP
php接口与接口引用的深入解析
2013/08/09 PHP
浅谈php+phpStorm+xdebug配置方法
2015/09/17 PHP
微信公众号开发之文本消息自动回复php代码
2016/08/08 PHP
PHP7内核之Reference详解
2019/03/14 PHP
Jquery在IE7下无法使用 $.ajax解决方法
2009/11/11 Javascript
Javascript 面向对象 继承
2010/05/13 Javascript
容易被忽略的JS脚本特性
2011/09/13 Javascript
Ext4.2的Ext.grid.plugin.RowExpander无法触发事件解决办法
2014/08/15 Javascript
浅谈javascript原型链与继承
2015/07/13 Javascript
bootstrap和jQuery.Gantt的css冲突 如何解决
2016/05/29 Javascript
js Canvas实现圆形时钟教程
2016/09/19 Javascript
深入理解JS中的Function.prototype.bind()方法
2016/10/11 Javascript
在JSP中如何实现MD5加密的方法
2016/11/02 Javascript
js实现日历与定时器
2017/02/22 Javascript
详解在Vue中如何使用axios跨域访问数据
2017/07/07 Javascript
原生JS 购物车及购物页面的cookie使用方法
2017/08/21 Javascript
js嵌套的数组扁平化:将多维数组变成一维数组以及push()与concat()区别的讲解
2019/01/19 Javascript
Python读取图片EXIF信息类库介绍和使用实例
2014/07/10 Python
Python的Flask框架中Flask-Admin库的简单入门指引
2015/04/07 Python
Python简单删除目录下文件以及文件夹的方法
2015/05/27 Python
Python制作爬虫抓取美女图
2016/01/20 Python
python装饰器深入学习
2018/04/06 Python
Windows 64位下python3安装nltk模块
2018/09/19 Python
python requests抓取one推送文字和图片代码实例
2019/11/04 Python
python 函数中的参数类型
2020/02/11 Python
python 安装移动复制第三方库操作
2020/07/13 Python
python实现不同数据库间数据同步功能
2021/02/25 Python
英国领先的男装设计师服装购物网站:Mainline Menswear
2018/02/04 全球购物
Lookfantastic西班牙官网:英国知名美妆购物网站
2018/06/13 全球购物
小米乌克兰网上商店:Xiaomi.UA
2019/10/29 全球购物
英国排名第一的宠物店:PetPlanet
2020/02/02 全球购物
Herschel美国官网:背包、手提袋及配件
2020/03/10 全球购物
给老师的检讨书
2014/02/11 职场文书
2014年秋季开学典礼主持词
2014/08/02 职场文书
2014年幼儿园工作总结
2014/11/10 职场文书