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输出指定月份日历的方法
Apr 23 Python
Python中用altzone()方法处理时区的教程
May 22 Python
DataFrame中去除指定列为空的行方法
Apr 08 Python
Python实现的绘制三维双螺旋线图形功能示例
Jun 23 Python
python生成九宫格图片
Nov 19 Python
解决PyCharm的Python.exe已经停止工作的问题
Nov 29 Python
Python中用pyinstaller打包时的图标问题及解决方法
Feb 17 Python
Python编程快速上手——strip()函数的正则表达式实现方法分析
Feb 29 Python
如何查看Django ORM执行的SQL语句的实现
Apr 20 Python
基于Python 的语音重采样函数解析
Jul 06 Python
Python模拟登录和登录跳转的参考示例
Oct 30 Python
Pandas中两个dataframe的交集和差集的示例代码
Dec 13 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
discuz安全提问算法
2007/06/06 PHP
php实现文件上传基本验证
2020/03/04 PHP
imgAreaSelect 中文文档帮助说明
2011/10/08 Javascript
js的hasownproperty使用示例
2014/03/02 Javascript
[原创]推荐10款最热门jQuery UI框架
2014/08/19 Javascript
javascript实现youku的视频代码自适应宽度
2015/05/25 Javascript
Position属性之relative用法
2015/12/14 Javascript
Javascript实现Array和String互转换的方法
2015/12/21 Javascript
多种JQuery循环滚动文字图片效果代码
2020/06/23 Javascript
ionic在开发ios系统微信时键盘挡住输入框的解决方法(键盘弹出问题)
2016/09/06 Javascript
vue的props实现子组件随父组件一起变化
2016/10/27 Javascript
巧用数组制作图片切换js代码
2016/11/29 Javascript
fullpage.js最后一屏滚动方式
2018/02/06 Javascript
vue通过指令(directives)实现点击空白处收起下拉框
2018/12/06 Javascript
JavaScript动态检测密码强度原理及实现方法详解
2019/06/11 Javascript
layui动态加载多表头的实例
2019/09/05 Javascript
javascript 对象 与 prototype 原型用法实例分析
2019/11/11 Javascript
为什么JavaScript中0.1 + 0.2 != 0.3
2020/12/03 Javascript
[01:08]DOTA2次级职业联赛 - Wings 战队宣传片
2014/12/01 DOTA
[01:08:09]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#1Liquid VS Alliance第二局
2016/03/02 DOTA
Python通过解析网页实现看报程序的方法
2014/08/04 Python
python爬虫入门教程之点点美女图片爬虫代码分享
2014/09/02 Python
python根据路径导入模块的方法
2014/09/30 Python
详尽讲述用Python的Django框架测试驱动开发的教程
2015/04/22 Python
如何更改 pandas dataframe 中两列的位置
2019/12/27 Python
Python实现隐马尔可夫模型的前向后向算法的示例代码
2019/12/31 Python
python3实现名片管理系统(控制台版)
2020/11/29 Python
澳大利亚领先的在线美容商店:Facial Co
2017/10/22 全球购物
ProBikeKit德国:在线公路自行车专家
2018/06/03 全球购物
项目副经理岗位职责
2013/12/30 职场文书
县政府领导班子四风问题对照检查材料思想汇报
2014/09/26 职场文书
简单租房协议书
2014/10/21 职场文书
丧事答谢词
2015/01/05 职场文书
水浒传读书笔记
2015/06/25 职场文书
大学军训通讯稿
2015/07/18 职场文书
python 实现定时任务的四种方式
2021/04/01 Python