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之编写类之二方法
Oct 11 Python
Python如何实现MySQL实例初始化详解
Nov 06 Python
python+matplotlib绘制旋转椭圆实例代码
Jan 12 Python
python hbase读取数据发送kafka的方法
Dec 27 Python
PySide和PyQt加载ui文件的两种方法
Feb 27 Python
Django使用AJAX调用自己写的API接口的方法
Mar 06 Python
Python实现的微信支付方式总结【三种方式】
Apr 13 Python
Python3实现配置文件差异对比脚本
Nov 18 Python
python 项目目录结构设置
Feb 14 Python
Django+Celery实现动态配置定时任务的方法示例
May 26 Python
Python中glob库实现文件名的匹配
Jun 18 Python
Python编程中内置的NotImplemented类型的用法
Mar 23 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+mysql)
2007/11/23 PHP
php 使用curl模拟登录人人(校内)网的简单实例
2016/06/06 PHP
PHP htmlspecialchars()函数用法与实例讲解
2019/03/08 PHP
popdiv
2006/07/14 Javascript
跨域表单提交状态的变相判断代码
2009/11/12 Javascript
JS操作Cookie写入和读取实例代码
2013/10/20 Javascript
jquery ajax jsonp跨域调用实例代码
2013/12/11 Javascript
javascript计算用户打开网页的停留时间
2014/01/09 Javascript
jquery控制display属性为none或block
2014/03/31 Javascript
JavaScript定义类和对象的方法
2014/11/26 Javascript
JQuery中DOM事件合成用法实例分析
2015/06/13 Javascript
动态创建按钮的JavaScript代码
2016/01/29 Javascript
微信小程序开发经验总结(推荐)
2017/01/11 Javascript
使用jQuery.Pin垂直滚动时固定导航
2017/05/24 jQuery
vue的全局提示框组件实例代码
2018/02/26 Javascript
vue 录制视频并压缩视频文件的方法
2018/07/27 Javascript
JS删除String里某个字符的方法
2021/01/06 Javascript
VUE DEMO之模拟登录个人中心页面之间数据传值实例
2019/10/31 Javascript
Vue中函数防抖节流的理解及应用实现
2020/04/24 Javascript
[03:57]2016完美“圣”典风云人物:rOtk专访
2016/12/09 DOTA
Python实现向QQ群成员自动发邮件的方法
2014/11/19 Python
Pycharm学习教程(3) 代码运行调试
2017/05/03 Python
Python如何抓取天猫商品详细信息及交易记录
2018/02/23 Python
python中协程实现TCP连接的实例分析
2018/10/14 Python
运用Python的webbrowser实现定时打开特定网页
2019/02/21 Python
python基于socket实现的UDP及TCP通讯功能示例
2019/11/01 Python
Python面向对象实现方法总结
2020/08/12 Python
html5生成柱状图(条形图)效果的实例代码
2016/03/25 HTML / CSS
Calzedonia美国官网:意大利风格袜子、打底裤和沙滩装
2018/07/19 全球购物
小学教师管理制度
2014/01/18 职场文书
业务员简历自我评价
2014/03/06 职场文书
我的理想演讲稿
2014/04/30 职场文书
司法助理专业自荐书
2014/06/13 职场文书
新教师个人工作总结
2015/02/06 职场文书
本科毕业论文致谢怎么写
2015/05/14 职场文书
用Python的绘图库(matplotlib)绘制小波能量谱
2021/04/17 Python