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程序设计入门(2)变量类型简介
Jun 16 Python
Python基于identicon库创建类似Github上用的头像功能
Sep 25 Python
Python实现的破解字符串找茬游戏算法示例
Sep 25 Python
Python最小二乘法矩阵
Jan 02 Python
Django 实现admin后台显示图片缩略图的例子
Jul 28 Python
tensorflow求导和梯度计算实例
Jan 23 Python
Python网页解析器使用实例详解
May 30 Python
Python如何生成xml文件
Jun 04 Python
Python Selenium模块安装使用教程详解
Jul 09 Python
Python利用pip安装tar.gz格式的离线资源包
Sep 14 Python
python获取linux系统信息的三种方法
Oct 14 Python
Python Parser的用法
May 12 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利用COM对象访问SQLServer、Access
2006/10/09 PHP
PHP程序员编程注意事项
2008/04/10 PHP
深入Memcache的Session数据的多服务器共享详解
2013/06/13 PHP
解决phpcms更换javascript的幻灯片代码调用图片问题
2014/12/26 PHP
使用Composer安装Yii框架的方法
2016/03/15 PHP
PHP文件操作实例总结
2016/09/27 PHP
php获取服务器操作系统相关信息的方法
2016/10/08 PHP
浅谈Coreseek、Sphinx-for-chinaese、Sphinx+Scws的区别
2016/12/15 PHP
PHP实现微信小程序用户授权的工具类示例
2019/03/05 PHP
PHP pthreads v3下worker和pool的使用方法示例
2020/02/21 PHP
基于jQuery的可用于选项卡及幻灯的切换插件
2011/03/28 Javascript
js提示框替代系统alert,自动关闭alert对话框的实现方法
2016/11/07 Javascript
微信小程序 删除项目工程实现步骤
2016/11/10 Javascript
JS实现重新加载当前页面
2016/11/29 Javascript
JavaScript设计模式之建造者模式实例教程
2018/07/02 Javascript
通过循环优化 JavaScript 程序
2019/06/24 Javascript
[48:56]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 VG vs KG
2018/03/31 DOTA
python中abs&map&reduce简介
2018/02/20 Python
Python IDLE清空窗口的实例
2018/06/25 Python
python列表list保留顺序去重的实例
2018/12/14 Python
python实现Excel文件转换为TXT文件
2019/04/28 Python
Python3.5 Json与pickle实现数据序列化与反序列化操作示例
2019/04/29 Python
Python猴子补丁Monkey Patch用法实例解析
2020/03/23 Python
Django DRF APIView源码运行流程详解
2020/08/17 Python
使用Python实现音频双通道分离
2020/12/25 Python
Python命令行参数argv和argparse该如何使用
2021/02/08 Python
加拿大时尚少女服装品牌:Garage
2016/10/10 全球购物
房地产销售员的自我评价分享
2013/12/04 职场文书
文字自荐书范文
2014/02/10 职场文书
廉政教育的心得体会
2014/09/01 职场文书
2014年国庆节演讲稿
2014/09/19 职场文书
教师党员自我评议不足范文
2014/10/19 职场文书
护理专业自荐信范文
2015/03/06 职场文书
适合毕业生创业的项目怎么找?
2019/08/08 职场文书
世界无敌的ICOM IC-R9500宽频接收机
2022/03/25 无线电
vue2的 router在使用过程中遇到的一些问题
2022/04/13 Vue.js