阅读对象:无要求。

1.代码

'''
OpenCV中的轮廓
轮廓可以简单认为成将连续的点(连着边界)连在一起的曲线,具有相同的颜色或者灰度。为了更加准确,要使用二值化图像。在寻找轮廓之前,要进行阈值化处理或者 Canny 边界检测。 cv2.findContours()在一个二值图像中查找轮廓
有三个参数:
第一个:输入图像;
第二个:轮廓检索模式;
第三个:轮廓近似方法
cv2.CHAIN_APPROX_NONE:所有的边界点都会被存储。但是我们真的需要这么多点吗?例如,当我们找的边界是一条直线时。你用需要直线上所有的点来表示直线吗?不是的,我们只需要这条直线的两个端点而已。
cv2.CHAIN_APPROX_SIMPLE :会将轮廓上的冗余点都去掉,压缩轮廓,从而节省内存开支。
返回值有三个:
第一个:图像,
第二个:轮廓,轮廓是一个 Python列表,其中存储这图像中的所有轮廓,每一个轮廓都是一个 Numpy 数组,包含对象边界点(x,y)的坐标。
第三个:(轮廓的)层析结构。
#######教程说有三个返回值,但是我用的opencv2.4版本只有两个返回值:轮廓和层次结构,切记######## cv2.drawContours() 可以被用来绘制轮廓。它可以根据你提供的边界点绘制任何形状。
第一个参数:原始图像,
第二个参数:轮廓,一个 Python 列表。
第三个参数:轮廓的索引(在绘制独立轮廓时很有用,当设置为-1时绘制所有轮廓)
接下来的参数:轮廓的颜色和厚度等。
'''
import numpy as np
import cv2
dir='C:/Users/Thinkpad/Desktop/picture/'
im = cv2.imread(dir + 'q.jpg')
imgray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
ret,thresh = cv2.threshold(imgray,127,255,0)
contours, hierarchy= cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
cv2.drawContours(im,contours, -1, (0,0,255),3)
cv2.imshow("im", im)
cv2.waitKey(0)

2.cv2.imshow("im", im) 的结果

图1 结果

参考资料:http://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_imgproc/py_contours/py_contours_begin/py_contours_begin.html

end!!

最新文章

  1. 学生管理系统<分层开发>
  2. <fieldset>
  3. 《BI那点儿事》META DATA(元数据)
  4. HexDump.java解析
  5. Linux环境下Python的安装过程
  6. ps 换图片的背景颜色
  7. 纯CSS3编写的面包屑导航收集
  8. BZOJ 1458: 士兵占领( 网络流 )
  9. 关于Verilog HDL的一些技巧、易错、易忘点(不定期更新)
  10. [js高手之路]HTML标签解释成DOM节点
  11. 用tar命令把目标压缩包解压到指定位置
  12. 第二节:Web前端-ASP.NET之C#基础
  13. Mysql 和 SQLServer 使用SQL差异比较
  14. Python中DataFrame去重
  15. Opencv(3):基本数据类型
  16. python websocket client 使用
  17. 单进程单线程的Redis如何能够高并发
  18. iOS - UITableView判断reloadData加载数据已经结束
  19. SQL注入漏洞知识总结
  20. 关于锚点(anchorPoint)的一些理解

热门文章

  1. 打开fiddler后无法访问网络问题
  2. php 计算坐标点方圆周围多少米的坐标算法
  3. WMS二开:外挂页面开发培训
  4. 使用WebClient调用第三方接口
  5. [Solution] 885. Spiral Matrix Ⅲ
  6. 2019 年 React 学习路线图(转)
  7. UVA 679 二叉树
  8. [剑指Offer]29-顺时针打印矩阵-Java
  9. WEB-INF目录下的jsp怎么引用外部文件:js,css等
  10. vue的事件处理梳理