opencv python Canny边缘提取实现过程解析


Posted in Python onFebruary 03, 2020

这篇文章主要介绍了opencv python Canny边缘提取实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

Canny是边缘提取算法,在1986年提出的是一个很好的边缘检测器Canny算法介绍

opencv python Canny边缘提取实现过程解析

非最大信号抑制:

opencv python Canny边缘提取实现过程解析

高低阈值连接:

opencv python Canny边缘提取实现过程解析

example

import cv2 as cv
import numpy as np


# canny运算步骤:5步
# 1. 高斯模糊 - GaussianBlur
# 2. 灰度转换 - cvtColor
# 3. 计算梯度 - Sobel/Scharr
# 4. 非极大值抑制
# 5. 高低阈值输出二值图像

# 非极大值抑制:
# 算法使用一个3×3邻域作用在幅值阵列M[i,j]的所有点上;
# 每一个点上,邻域的中心像素M[i,j]与沿着梯度线的两个元素进行比较,
# 其中梯度线是由邻域的中心点处的扇区值ζ[i,j]给出。
# 如果在邻域中心点处的幅值M[i,j]不比梯度线方向上的两个相邻点幅值大,则M[i,j]赋值为零,否则维持原值;
# 此过程可以把M[i,j]宽屋脊带细化成只有一个像素点宽,即保留屋脊的高度值。

# 高低阈值连接
# T1,T2为阈值,凡是高于T2的都保留,凡是低于T1的都丢弃
# 从高于T2的像素出发,凡是大于T1而且相互连接的都保留。最终得到一个输出二值图像
# 推荐高低阈值比值为T2:T1 = 3:1/2:1,其中T2高阈值,T1低阈值


def edge_demo(image):
  blurred = cv.GaussianBlur(image, (3, 3), 0)
  gray = cv.cvtColor(blurred, cv.COLOR_BGR2GRAY)

  grad_x = cv.Sobel(gray, cv.CV_16SC1, 1, 0)
  grad_y = cv.Sobel(gray, cv.CV_16SC1, 0, 1)

  # edge_output = cv.Canny(grad_x, grad_y, 30, 150)
  edge_output = cv.Canny(gray, 50, 150)
  cv.imshow("gray", gray)
  cv.imshow("Canny demo", edge_output)


def main():
  src = cv.imread("../images/Crystal.jpg")
  cv.imshow("demo",src)

  edge_demo(src)
  cv.waitKey(0) # 等有键输入或者1000ms后自动将窗口消除,0表示只用键输入结束窗口
  cv.destroyAllWindows() # 关闭所有窗口


if __name__ == '__main__':
  main()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python合并多个装饰器小技巧
Apr 28 Python
python使用urllib2实现发送带cookie的请求
Apr 28 Python
简单解析Django框架中的表单验证
Jul 17 Python
python批量导入数据进Elasticsearch的实例
May 30 Python
python3解析库lxml的安装与基本使用
Jun 27 Python
flask框架视图函数用法示例
Jul 19 Python
python+splinter实现12306网站刷票并自动购票流程
Sep 25 Python
Python配置虚拟环境图文步骤
May 20 Python
Python3爬虫中Ajax的用法
Jul 10 Python
Python装饰器如何实现修复过程解析
Sep 05 Python
Python logging日志库空间不足问题解决
Sep 14 Python
Anaconda+spyder+pycharm的pytorch配置详解(GPU)
Oct 18 Python
Pycharm debug调试时带参数过程解析
Feb 03 #Python
Python使用enumerate获取迭代元素下标
Feb 03 #Python
TensorFlow 显存使用机制详解
Feb 03 #Python
opencv python如何实现图像二值化
Feb 03 #Python
python实现人机猜拳小游戏
Feb 03 #Python
如何使用selenium和requests组合实现登录页面
Feb 03 #Python
检测tensorflow是否使用gpu进行计算的方式
Feb 03 #Python
You might like
PHP排序算法的复习和总结
2012/02/15 PHP
php使HTML标签自动补全闭合函数代码
2012/10/04 PHP
使用PHP获取汉字的拼音(全部与首字母)
2013/06/27 PHP
[原创]php集成安装包wampserver修改密码后phpmyadmin无法登陆的解决方法
2016/11/23 PHP
如何判断图片地址是否失效
2007/02/02 Javascript
7个Javascript地图脚本整理
2009/10/20 Javascript
如何使用Javascript获取距今n天前的日期
2013/07/08 Javascript
JavaScript 面向对象与原型
2015/04/10 Javascript
jQuery简单实现遍历数组的方法
2015/04/14 Javascript
js结合正则实现国内手机号段校验
2015/06/19 Javascript
JS实现用户注册时获取短信验证码和倒计时功能
2016/10/27 Javascript
AngularJS指令用法详解
2016/11/02 Javascript
Vue.js系列之项目结构说明(2)
2017/01/03 Javascript
JS实现针对给定时间的倒计时功能示例
2017/04/11 Javascript
bootstrap table表格客户端分页实例
2017/08/07 Javascript
详解vue中axios的封装
2018/07/18 Javascript
优雅的elementUI table单元格可编辑实现方法详解
2018/12/23 Javascript
详解如何快速配置webpack多入口脚手架
2018/12/28 Javascript
超简单的微信小程序轮播图
2019/11/22 Javascript
[26:21]浴火之凤-TI4世界冠军Newbee战队纪录片
2014/08/07 DOTA
分析经典Python开发工程师面试题
2019/04/08 Python
选择python进行数据分析的理由和优势
2019/06/25 Python
Python的Tkinter点击按钮触发事件的例子
2019/07/19 Python
Html5踩坑记之mandMobile使用小记
2020/04/02 HTML / CSS
KIKO美国官网:意大利的平价彩妆品牌
2017/05/16 全球购物
大韩航空官方网站:Korean Air
2017/10/25 全球购物
俄罗斯最大的在线珠宝大卖场:Nebo
2019/12/08 全球购物
求职信格式范本
2013/11/15 职场文书
资源工程专业毕业生求职信
2014/02/27 职场文书
财务总监管理岗位职责
2014/03/08 职场文书
新农村建设汇报材料
2014/08/15 职场文书
领导四风问题整改措施思想汇报
2014/10/13 职场文书
2014年助理政工师工作总结
2014/12/19 职场文书
2015年母亲节活动总结
2015/02/10 职场文书
《包身工》教学反思
2016/02/23 职场文书
Redis主从复制操作和配置详情
2022/09/23 Redis