Python通过OpenCV的findContours获取轮廓并切割实例


Posted in Python onJanuary 05, 2018

1 获取轮廓

OpenCV2获取轮廓主要是用cv2.findContours

import numpy as np
import cv2

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

其中,findContours的第二个函数很重要,主要分为 cv2.RETR_LIST, cv2.RETR_TREE, cv2.RETR_CCOMP, cv2.RETR_EXTERNAL,具体含义可参考官方文档

2 画出轮廓

为了看到自己画了哪些轮廓,可以使用 cv2.boundingRect()函数获取轮廓的范围,即左上角原点,以及他的高和宽。然后用cv2.rectangle()方法画出矩形轮廓

for i in range(0,len(contours)): 
  x, y, w, h = cv2.boundingRect(contours[i])  
  cv2.rectangle(image, (x,y), (x+w,y+h), (153,153,0), 5)

3切割轮廓

轮廓的切割主要是通过数组切片实现的,不过这里有一个小技巧:就是图片切割的w,h是宽和高,而数组讲的是行(row)和列(column)

所以,在切割图片时,数组的高和宽是反过来写的

newimage=image[y+2:y+h-2,x+2:x+w-2] # 先用y确定高,再用x确定宽
      nrootdir=("E:/cut_image/")
      if not os.path.isdir(nrootdir):
        os.makedirs(nrootdir)
      cv2.imwrite( nrootdir+str(i)+".jpg",newimage) 
      print (i)

这样就可以把确定的轮廓都切割出来了。

总结

以上就是本文关于Python通过OpenCV的findContours获取轮廓并切割实例的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:

如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

Python 相关文章推荐
python3+PyQt5图形项的自定义和交互 python3实现page Designer应用程序
Jul 20 Python
判断python字典中key是否存在的两种方法
Aug 10 Python
selenium3+python3环境搭建教程图解
Dec 07 Python
Python数据分析:手把手教你用Pandas生成可视化图表的教程
Dec 15 Python
浅谈Python采集网页时正则表达式匹配换行符的问题
Dec 20 Python
python 提取tuple类型值中json格式的key值方法
Dec 31 Python
python 缺失值处理的方法(Imputation)
Jul 02 Python
利用python实现汉字转拼音的2种方法
Aug 12 Python
python实现udp聊天窗口
Mar 31 Python
python 实现弹球游戏的示例代码
Nov 17 Python
python中requests库+xpath+lxml简单使用
Apr 29 Python
python中__slots__节约内存的具体做法
Jul 04 Python
Python+selenium实现截图图片并保存截取的图片
Jan 05 #Python
微信跳一跳辅助python代码实现
Jan 05 #Python
使用python为mysql实现restful接口
Jan 05 #Python
微信跳一跳python代码实现
Jan 05 #Python
python+opencv轮廓检测代码解析
Jan 05 #Python
python selenium UI自动化解决验证码的4种方法
Jan 05 #Python
轻松实现TensorFlow微信跳一跳的AI
Jan 05 #Python
You might like
php Smarty date_format [格式化时间日期]
2010/03/15 PHP
PHP连接MySQL查询结果中文显示乱码解决方法
2013/10/25 PHP
JS操作JSON要领详细总结
2013/08/25 Javascript
javascript验证身份证完全方法具体实现
2013/11/18 Javascript
jquery设置text的值示例(设置文本框 DIV 表单值)
2014/01/06 Javascript
node.js中的fs.chmod方法使用说明
2014/12/18 Javascript
AngularJS表单编辑提交功能实例
2015/02/13 Javascript
js日期范围初始化得到前一个月日期的方法
2015/05/05 Javascript
jQuery制作网页版选项卡
2016/07/28 Javascript
Bootstrap树形菜单插件TreeView.js使用方法详解
2016/11/01 Javascript
jQuery元素选择器实例代码
2017/02/06 Javascript
H5实现中奖记录逐行滚动切换效果
2017/03/13 Javascript
JS+html5制作简单音乐播放器
2020/09/13 Javascript
Js实现京东无延迟菜单效果实例(demo)
2017/06/02 Javascript
详解Vuex下Store的模块化拆分实践
2019/07/31 Javascript
vue图片上传组件使用详解
2019/12/23 Javascript
解决vue项目运行npm run serve报错的问题
2020/10/26 Javascript
js实现缓动动画
2020/11/25 Javascript
Python和perl实现批量对目录下电子书文件重命名的代码分享
2014/11/21 Python
用Python中的wxPython实现最基本的浏览器功能
2015/04/14 Python
对Python 网络设备巡检脚本的实例讲解
2018/04/22 Python
python 实现二维列表转置
2019/12/02 Python
Python3读写Excel文件(使用xlrd,xlsxwriter,openpyxl3种方式读写实例与优劣)
2020/02/13 Python
html5 figure和figcaption的使用方法
2018/09/10 HTML / CSS
Lookfantastic意大利官网:英国知名美妆购物网站
2019/05/31 全球购物
沙特阿拉伯排名第一的在线时尚购物应用程序:1Zillion
2020/08/08 全球购物
师范生教师实习自我鉴定
2013/09/27 职场文书
个人自我鉴定
2013/11/07 职场文书
《争吵》教学反思
2014/02/15 职场文书
党员干部廉洁承诺书
2014/05/28 职场文书
死亡赔偿协议书
2015/01/28 职场文书
2016年秋季运动会通讯稿
2015/11/25 职场文书
2016年师德先进个人事迹材料
2016/02/29 职场文书
彩虹社八名人气艺人全新周边限时推出,性转女装男装一次拥有!
2022/04/01 日漫
解决IDEA翻译插件Translation报错更新TTK失败不能使用
2022/04/24 Python
JS精髓原型链继承及构造函数继承问题纠正
2022/06/16 Javascript