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 相关文章推荐
Python struct模块解析
Jun 12 Python
Python实现拼接多张图片的方法
Dec 01 Python
python打包压缩、读取指定目录下的指定类型文件
Apr 12 Python
Python 读写文件的操作代码
Sep 20 Python
python的常用模块之collections模块详解
Dec 06 Python
解决PyCharm不运行脚本,而是运行单元测试的问题
Jan 17 Python
python启动应用程序和终止应用程序的方法
Jun 28 Python
Python之数据序列化(json、pickle、shelve)详解
Aug 30 Python
python 浅谈serial与stm32通信的编码问题
Dec 18 Python
简单了解为什么python函数后有多个括号
Dec 19 Python
Python基于Serializer实现字段验证及序列化
Nov 04 Python
python引入其他文件夹下的py文件具体方法
May 23 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
第十四节 命名空间 [14]
2006/10/09 PHP
简单的PHP缓存设计实现代码
2011/09/30 PHP
php生成shtml类用法实例
2014/12/09 PHP
jquery 图片 上一张 下一张 链接效果(续篇)
2010/04/20 Javascript
js调用后台servlet方法实例
2013/06/09 Javascript
JS.getTextContent(element,preformatted)使用介绍
2013/09/21 Javascript
完美兼容多浏览器的js判断图片路径代码汇总
2015/04/17 Javascript
JS+CSS实现大气清新的滑动菜单效果代码
2015/10/22 Javascript
不同js异步函数同步的实现方法
2016/05/28 Javascript
JS实现间歇滚动的运动效果实例
2016/12/22 Javascript
AngularJS执行流程详解
2017/02/17 Javascript
jquery应用实例分享_实现手风琴特效
2018/02/01 jQuery
js自定义trim函数实现删除两端空格功能
2018/02/09 Javascript
详解vue.js下引入百度地图jsApi的两种方法
2018/07/27 Javascript
使用FormData实现上传多个文件
2018/12/04 Javascript
el-input 标签中密码的显示和隐藏功能的实例代码
2019/07/19 Javascript
前端开发基础javaScript的六大作用
2020/08/06 Javascript
动感网页相册 python编写简单文件夹内图片浏览工具
2016/08/17 Python
Python实现将数据库一键导出为Excel表格的实例
2016/12/30 Python
python九九乘法表的实例
2017/09/26 Python
Python实现简单文本字符串处理的方法
2018/01/22 Python
python操作oracle的完整教程分享
2018/01/30 Python
python 创建一个空dataframe 然后添加行数据的实例
2018/06/07 Python
简单介绍python封装的基本知识
2019/08/10 Python
pytorch 使用单个GPU与多个GPU进行训练与测试的方法
2019/08/19 Python
基于Python的自媒体小助手---登录页面的实现代码
2020/06/29 Python
安装pyinstaller遇到的各种问题(小结)
2020/11/20 Python
如何开发一款堪比APP的微信小程序(腾讯内部团队分享)
2016/12/22 HTML / CSS
英国异国风情旅游网站:Travel Talk Tours(团体旅游、探险旅游、帆船假期)
2018/07/26 全球购物
美国高端牛仔品牌:Silver Jeans
2019/12/12 全球购物
事业单位个人应聘自荐信
2013/09/21 职场文书
超市采购员岗位职责
2014/02/01 职场文书
高中打架检讨书
2014/02/13 职场文书
总经理任命书
2014/03/29 职场文书
证券公司客户经理岗位职责
2015/04/09 职场文书
redis数据结构之压缩列表
2022/03/21 Redis