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中删除文件的程序代码
Mar 13 Python
Python中operator模块的操作符使用示例总结
Jun 28 Python
Python 实现简单的shell sed替换功能(实例讲解)
Sep 29 Python
python 将数据保存为excel的xls格式(实例讲解)
May 03 Python
pandas 根据列的值选取所有行的示例
Nov 07 Python
python 使用装饰器并记录log的示例代码
Jul 12 Python
Django框架中序列化和反序列化的例子
Aug 06 Python
Python学习笔记之Zip和Enumerate用法实例分析
Aug 14 Python
基于python监控程序是否关闭
Jan 14 Python
python 制作本地应用搜索工具
Feb 27 Python
Python办公自动化之教你用Python批量识别发票并录入到Excel表格中
Jun 26 Python
用Python爬取英雄联盟的皮肤详细示例
Dec 06 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 Google的translate API代码
2008/12/10 PHP
php 注释规范
2012/03/29 PHP
php获取用户IPv4或IPv6地址的代码
2012/11/15 PHP
php中stdClass的用法分析
2015/02/27 PHP
PHP中生成UUID自定义函数分享
2015/06/10 PHP
Apache启动报错No space left on device: AH00023该怎么解决
2015/10/16 PHP
PHP文件缓存类实现代码
2015/10/26 PHP
你需要知道的JavsScript可以做什么?
2007/06/29 Javascript
从父页面读取和操作iframe中内容方法
2009/07/25 Javascript
jquery+php实现搜索框自动提示
2014/11/28 Javascript
九种原生js动画效果
2015/11/11 Javascript
node.js express安装及示例网站搭建方法(分享)
2016/08/22 Javascript
微信小程序 获取设备信息 API实例详解
2016/10/02 Javascript
微信小程序如何获知用户运行小程序的场景教程
2017/05/17 Javascript
Vue.js中轻松解决v-for执行出错的三个方案
2017/06/09 Javascript
JS实现中英文混合文字溢出友好截取功能
2018/08/06 Javascript
[01:35:13]DOTA2-DPC中国联赛 正赛 DLG vs PHOENIX BO3 第一场 1月18日
2021/03/11 DOTA
Python3指定路径寻找符合匹配模式文件
2015/05/22 Python
Python中的默认参数实例分析
2018/01/29 Python
浅谈Python中的zip()与*zip()函数详解
2018/02/24 Python
Python中用pyinstaller打包时的图标问题及解决方法
2020/02/17 Python
python 输入字符串生成所有有效的IP地址(LeetCode 93号题)
2020/10/15 Python
发现两个有趣的CSS3动画效果
2013/08/14 HTML / CSS
纯CSS3实现的井字棋游戏
2020/11/25 HTML / CSS
HTML5+CSS3实现机器猫
2016/10/17 HTML / CSS
北美三大旅游网站之一:Travelocity加拿大
2016/08/20 全球购物
集团薪酬管理制度
2014/01/13 职场文书
小学安全教育月活动总结
2014/07/07 职场文书
人事专员岗位说明书
2014/07/29 职场文书
基层党员干部四风问题整改方向和措施
2014/09/25 职场文书
校本课程教学计划
2015/01/19 职场文书
2015年清明节扫墓演讲稿
2015/03/18 职场文书
宾馆前台接待岗位职责
2015/04/02 职场文书
2015年员工试用期工作总结
2015/05/28 职场文书
搞笑的婚礼主持词
2015/06/29 职场文书
MySQL 用 limit 为什么会影响性能
2021/09/15 MySQL