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的Flask框架开发环境的一些技巧总结
Jul 12 Python
Python Paramiko模块的安装与使用详解
Nov 18 Python
python3.4下django集成使用xadmin后台的方法
Aug 15 Python
Python实现PS滤镜功能之波浪特效示例
Jan 26 Python
[原创]Python入门教程1. 基本运算【四则运算、变量、math模块等】
Oct 28 Python
很酷的python表白工具 你喜欢我吗
Apr 11 Python
用python给自己做一款小说阅读器过程详解
Jul 11 Python
Python中的self用法详解
Aug 06 Python
使用Pytorch来拟合函数方式
Jan 14 Python
python名片管理系统开发
Jun 18 Python
Pytorch 高效使用GPU的操作
Jun 27 Python
Pytorch 实现变量类型转换
May 17 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面象对象数据库操作类实例
2014/12/02 PHP
Laravel5.5新特性之友好报错以及展示详解
2017/08/13 PHP
前淘宝前端开发工程师阿当的PPT中有JS技术理念问题
2010/01/15 Javascript
jquery中动态效果小结
2010/12/16 Javascript
同一页面多个商品倒计时JS 基于面向对象的javascript
2012/02/16 Javascript
基于jQuery的简单九宫格实现代码
2012/08/09 Javascript
你必须知道的JavaScript 中字符串连接的性能的一些问题
2013/05/07 Javascript
jQuery定义背景动态切换效果的方法
2015/03/23 Javascript
关注jquery技巧提高jquery技能(前端开发必学)
2015/11/02 Javascript
jQuery+jsp下拉框联动获取本地数据的方法(附源码)
2015/12/03 Javascript
javascript中对Date类型的常用操作小结
2016/05/19 Javascript
jQuery实现摸拟alert提示框
2016/05/22 Javascript
Vue2.x中的父组件传递数据至子组件的方法
2017/05/01 Javascript
实现图片首尾平滑轮播(JS原生方法—节流)
2017/10/17 Javascript
dropload.js插件下拉刷新和上拉加载使用详解
2017/10/20 Javascript
Vue项目中ESlint规范示例代码
2019/07/04 Javascript
原生js实现轮播图特效
2020/05/04 Javascript
解决vue bus.$emit触发第一次$on监听不到问题
2020/07/28 Javascript
vue组件开发之tab切换组件使用详解
2020/08/21 Javascript
[01:00:25]NB vs Secret 2018国际邀请赛小组赛BO1 B组加赛 8.19
2018/08/21 DOTA
[01:03:41]DOTA2-DPC中国联赛 正赛 Dynasty vs XG BO3 第三场 2月2日
2021/03/11 DOTA
Caffe均值文件mean.binaryproto转mean.npy的方法
2018/07/09 Python
Python 实现还原已撤回的微信消息
2019/06/18 Python
Python学习笔记之Break和Continue用法分析
2019/08/14 Python
python+opencv边缘提取与各函数参数解析
2020/03/09 Python
python和C++共享内存传输图像的示例
2020/10/27 Python
五种Python转义表示法
2020/11/27 Python
意大利简约的休闲品牌:Aspesi
2018/02/08 全球购物
简述数组与指针的区别
2014/01/02 面试题
关于爱情的广播稿
2014/01/16 职场文书
重阳节登山活动方案
2014/02/03 职场文书
做人民满意的公务员活动方案
2014/08/25 职场文书
拔河比赛新闻稿
2015/07/17 职场文书
初中班级口号霸气押韵
2015/12/24 职场文书
java泛型通配符详解
2021/07/25 Java/Android
微软Win11 全新照片应用面向 Dev预览版推出 新版本上手体验图集
2022/09/23 数码科技