python实现轮廓发现
目录:
(一)轮廓发现的介绍
(二)代码实现
(1)使用直接使用阈值方法threshold方法获取二值化图像来选择轮廓
(2)使用canny边缘检测获取二值化图像
(一)轮廓发现的介绍与API的介绍



操作步骤:
1.转换图像为二值化图像:threshold方法或者canny边缘提取获取的都是二值化图像
2.通过二值化图像寻找轮廓:findContours
3.描绘轮廓:drawContours
(二)代码实现
(1)使用直接使用阈值方法threshold方法获取二值化图像来选择轮廓
1 def contours_demo(image):
2 dst = cv.GaussianBlur(image,(9,9),15) #高斯模糊,消除噪声
3 gray = cv.cvtColor(dst,cv.COLOR_BGR2GRAY) #先变灰度图像
4 ret, binary = cv.threshold(gray,0,255,cv.THRESH_BINARY|cv.THRESH_OTSU) #获取二值图像
5 cv.imshow("binary image",binary)
6
7 # cloneImage,contours,heriachy = cv.findContours(binary,cv.RETR_TREE,cv.CHAIN_APPROX_SIMPLE) #RETR_TREE包含检测内部
8 cloneImage,contours,heriachy = cv.findContours(binary,cv.RETR_EXTERNAL,cv.CHAIN_APPROX_SIMPLE) #RETR_EXTERNAL检测外部轮廓
9 for i, contour in enumerate(contours):
10 # cv.drawContours(image,contours,i,(0,0,255),2) #绘制轮廓
11 cv.drawContours(image,contours,i,(0,0,255),-1) #填充轮廓
12 print(i)
13 cv.imshow("detect contours",image)
14
15
16 src = cv.imread("./lk.png") #读取图片
17 cv.namedWindow("input image",cv.WINDOW_AUTOSIZE) #创建GUI窗口,形式为自适应
18 cv.imshow("input image",src) #通过名字将图像和窗口联系
19
20 contours_demo(src)
21
22 cv.waitKey(0) #等待用户操作,里面等待参数是毫秒,我们填写0,代表是永远,等待用户操作
23 cv.destroyAllWindows() #销毁所有窗口


(2)使用canny边缘检测获取二值化图像
1 def contours_demo(image):
2 binary = edge_demo(image)
3
4 cloneImage,contours,heriachy = cv.findContours(binary,cv.RETR_TREE,cv.CHAIN_APPROX_SIMPLE) #RETR_TREE包含检测内部
5 for i, contour in enumerate(contours):
6 # cv.drawContours(image,contours,i,(0,0,255),2)
7 cv.drawContours(image,contours,i,(0,0,255),-1)
8 print(i)
9 cv.imshow("detect contours",image)
10
11 def edge_demo(image):
12 dst = cv.GaussianBlur(image,(3,3),0)
13 gray = cv.cvtColor(dst,cv.COLOR_BGR2GRAY) #先变灰度图像
14
15 edge_output = cv.Canny(gray,50,108)
16
17 cv.imshow("detect contours",edge_output)
18 return edge_output
19
20 src = cv.imread("./lk.png") #读取图片
21 cv.namedWindow("input image",cv.WINDOW_AUTOSIZE) #创建GUI窗口,形式为自适应
22 cv.imshow("input image",src) #通过名字将图像和窗口联系
23
24 contours_demo(src)
25
26 cv.waitKey(0) #等待用户操作,里面等待参数是毫秒,我们填写0,代表是永远,等待用户操作
27 cv.destroyAllWindows() #销毁所有窗口

参考:
https://www.cnblogs.com/ssyfj/p/9276443.html
python实现轮廓发现的更多相关文章
- opencv python:轮廓发现
example import cv2 as cv import numpy as np def edge_demo(image): blurred = cv.GaussianBlur(image, ( ...
- 【python+opencv】轮廓发现
python+opencv---轮廓发现 轮廓发现---是基于图像边缘提取的基础寻找对象轮廓的方法, 所有边缘提取的阈值选定会影响最终轮廓发现的结果. 介绍两种API使用: -cv.findConto ...
- Python+OpenCV图像处理(十六)—— 轮廓发现
简介:轮廓发现是基于图像边缘提取的基础寻找对象轮廓的方法,所以边缘提取的阈值选定会影响最终轮廓发现结果. 代码如下: import cv2 as cv import numpy as np def c ...
- opencv::轮廓发现(find contour in your image)
轮廓发现(find contour) 轮廓发现是基于图像边缘提取的基础寻找对象轮廓的方法. 所以边缘提取的阈值选定会影响最终轮廓发现结果 //发现轮廓 cv::findContours( InputO ...
- Pytest权威教程-更改标准(Python)测试发现
目录 更改标准(Python)测试发现 在测试收集过程中忽略路径 测试期间收集的测试取消 保留从命令行指定的重复路径 更改目录递归 更改命名约定 将cmdline参数解释为Python包 找出收集的东 ...
- opencv——轮廓发现与轮廓(二值图像)分析
引言 二值图像分析最常见的一个主要方式就是轮廓发现与轮廓分析,其中轮廓发现的目的是为轮廓分析做准备,经过轮廓分析我们可以得到轮廓各种有用的属性信息. 这里顺带提下边缘检测,和轮廓提取的区别: 边缘检测 ...
- 15、OpenCV Python 轮廓发现
__author__ = "WSX" import cv2 as cv import numpy as np # 基于拓扑结构来发现和绘制(边缘提取) # cv.findConto ...
- 用python实现新词发现程序——基于凝固度和自由度
互联网时代,信息产生的数量和传递的速度非常快,语言文字也不断变化更新,新词层出不穷.一个好的新词发现程序对做NLP(自然预言处理)来说是非常重要的. N-Gram加词频 最原始的新词算法莫过于n-gr ...
- python opencv3 轮廓检测
git:https://github.com/linyi0604/Computer-Vision # coding:utf8 import cv2 import numpy as np # 创建一个2 ...
随机推荐
- cron表达式的双重人格:星期和数字到底如何对应?
写在前面 cron在希腊语中是时间的意思,而cron表达式(cron expression)则是遵循特定规则,用于描述定时设置的字符串,常用于执行定时任务.本文总结了不同环境(如平台.库等)下,cro ...
- RAC使用auto rolling的方式打补丁
11.2.0.4 RAC 某系统主库使用auto rolling的方式打补丁在一节点执行1-5,结束后然后在二节点执行1-5,结束后最后再在某个节点执行6. 1.backup GI_HOME& ...
- CentOS7安装Python3和VIM8
参考:http://blog.sina.com.cn/s/blog_45249ad30102yulz.html
- Zookeeper 集群部署的那些事儿
简介 额...., &*$% 淘气! ZooKeeper 是 Apache 的一个顶级项目,为分布式应用提供高效.高可用的分布式协调服务. ZooKeeper本质上是一个分布式的小文件存储系统 ...
- 鲲鹏展翅|SphereEx 获华为鲲鹏技术认证
SphereEx Data Middleware 通过了华为鲲鹏技术认证并加入鲲鹏展翅伙伴计划,未来 SphereEx Data Middleware 产品将继续以分布式能力为基础,以数据安全.分布式 ...
- 利用PATH环境变量 - 提升linux权限~👻
利用PATH提升linux权限 参考地址:https://www.hackingarticles.in/linux-privilege-escalation-using-path-variable/ ...
- Java(36)IO流案例与总结
作者:季沐测试笔记 原文地址:https://www.cnblogs.com/testero/p/15228455.html 博客主页:https://www.cnblogs.com/testero ...
- 禅道开源版 Ldap认证插件开发
禅道开源版-Ldap插件开发 背景 由于开源版无法使用ldap认证,所以在此分享一下自己开发禅道的ldap开发过程,希望对你有所帮助. 简单说一下这个插件的功能: 1.跳过原有禅道认证,使用ldap认 ...
- 重磅!微软发布 vscode.dev,把 VS Code 带入浏览器!
早在 2019 年,当.dev顶级域名开放时,我们赶紧注册了vscode.dev.像许多购买.dev域名的人一样,我们不知道我们将用它做啥.反正,也占个坑吧! 将 VS Code 带入浏览器 直到今天 ...
- 热身训练1 Problem B. Harvest of Apples
http://acm.hdu.edu.cn/showproblem.php?pid=6333 题意: 求 C(0,n)+C(1,n)+...+C(m,n) 分析: 这道题,我们令s(m,n) = C( ...