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)
1
2
3
4
5
6
7
其中,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) 
1
2
3
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)
1
2
3
4
5
6
这样就可以把确定的轮廓都切割出来了。
--------------------- 
作者:loovelj 
来源:CSDN 
原文:https://blog.csdn.net/loovelj/article/details/78739790 
版权声明:本文为博主原创文章,转载请附上博文链接!

使用OpenCV的findContours获取轮廓并切割(python)相关推荐

  1. OpenCV之findContours获取轮廓(Python版)

    参考:https://blog.csdn.net/loovelj/article/details/78739790 OpenCV自带寻找轮廓的函数,流程是:获取灰度图→图片二值化→寻找轮廓 直接上代码 ...

  2. OpenCV使用findContours查找轮廓和相关函数——C++

    OpenCV使用findContours查找轮廓和相关函数--C++ findContours函数的使用 findContours函数的使用 //查找前景的区域 vector<vector< ...

  3. 利用OpenCV的findContours作轮廓检测

    图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 问: 边缘检测与轮廓检测有什么区别? 边缘检测是 ...

  4. OpenCV使用findContours()查找轮廓

    C++: void findContours (InputOutputArray image, OutputArrayOfArrays contours, OutputArray hierarchy, ...

  5. 获取轮廓、获取内接矩形

    对原图像,使用Imgproc.findContours获取轮廓. 对轮廓,使用Imgproc.minAreaRect获取轮廓的内接矩形(可能会有旋转角度). 对上述内接矩形使用boundingRect ...

  6. 【图像处理】——Python+opencv实现二值图像的轮廓边界跟踪以及轮廓面积周长的求解(findcontours函数和contourArea函数)

    目录 一.函数 cv.findContours 二.轮廓层级(返回参数hierarchy) 三.轮廓寻找方式 1. RETR_LIST 2. RETR_TREE 3. RETR_EXTERNAL 4. ...

  7. 【opencv】(6) 图像轮廓处理

    各位同学好,今天和大家分享一下opencv中如何获取图像轮廓,以及对轮廓的一些其他操作.内容有: (1)轮廓检测:cv2.findContours():(2)轮廓绘制:cv2.drawContours ...

  8. OpenCV-寻找轮廓cv::findContours绘制轮廓cv::drawContours

    作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 函数原型 void findContours( InputArray image, Output ...

  9. OpenCV:07图像轮廓

    图像轮廓 什么是图形轮廓 查找轮廓 绘制轮廓 计算轮廓的面积和周长 轮廓面积 轮廓周长 多边形逼近 凸包 轮廓拟合 外接矩形 最小外接矩形 最大外接矩形 外接圆 边缘检测`Canny` 霍夫变换 直线 ...

最新文章

  1. ObjC: 使用KVO
  2. 编程方法学11:Gimage
  3. ADO.NET DataSet 数据模型
  4. 【Android AAR】1 分钟不用改任何代码在 Eclipse 中使用 AAR
  5. 38行代码AC——L1-025 正整数A+B (15分)(~解题报告~)
  6. python progressbar print_python print 进度条的例子
  7. msyql的FORMAT()函数设置小数位数,将小数位数保留到小数点后第n位,最后一位四舍五入
  8. crystal ball 软件_推荐10个堪称神器的软件工具
  9. DDOS压力测试系统
  10. SparkStreaming之transform
  11. 陪同学面试,我竟然被录取了
  12. ArcGIS中创建数据要素模板,便捷数据采集
  13. 解决IE7中移动文件夹无法收藏问题
  14. win10安装mvn,安装ojdbc7.jar
  15. 北京计算机应用中级,计算机应用教程(中级)
  16. System Toolkit 3.3.3 中文版 系统维护工具箱
  17. 破解win7开机密码
  18. C++ 解决经典哥尼斯堡七桥问题
  19. jcp jsr_JCP专家组成员拒绝社交媒体API引发了关于创新的辩论
  20. 国外计算机从什么开始学,从零开始学电脑知识 1(国外英语资料).doc

热门文章

  1. 增删改查 HTML表格页面,表格增删改查.html
  2. oracle字典表导出,oracle 如何导出数据字典
  3. 7-19 支票面额 (C语言)
  4. iframe 有那些缺点?
  5. viewpager初始化fragment没有绘制_Fragment在ViewPager中的正确应用(3)FragmentStatePagerAdapter优化了什么...
  6. 一个简单的例子学会github repository的webhook
  7. 汉化 Hirens.BootCD 中的 XP 系统
  8. L2-002. 链表去重
  9. 强人工智能基本问题:全局控制与自组织
  10. 一天之内用SDN能做出什么