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递归删除指定目录及其所有内容的方法
Jan 13 Python
python爬虫入门教程--正则表达式完全指南(五)
May 25 Python
Python模块结构与布局操作方法实例分析
Jul 24 Python
python实现音乐下载器
Apr 15 Python
python3.7 利用函数os pandas利用excel对文件名进行归类
Sep 29 Python
python 实现将list转成字符串,中间用空格隔开
Dec 25 Python
python实现堆排序的实例讲解
Feb 21 Python
Python lambda表达式原理及用法解析
Aug 18 Python
pycharm2020.1.2永久破解激活教程,实测有效
Oct 29 Python
Python监听键盘和鼠标事件的示例代码
Nov 18 Python
python爬虫中url管理器去重操作实例
Nov 30 Python
pycharm进入时每次都是insert模式的解决方式
Feb 05 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
Uchome1.2 1.5 代码学习 common.php
2009/04/24 PHP
php数组函数序列之array_unique() - 去除数组中重复的元素值
2011/10/29 PHP
php curl常见错误:SSL错误、bool(false)
2011/12/28 PHP
php中的boolean(布尔)类型详解
2013/10/28 PHP
用PHP生成excel文件到指定目录
2015/06/22 PHP
PHP串行化与反串行化实例分析
2016/12/27 PHP
比较简单实用的使用正则三种版本的js去空格处理方法
2007/11/18 Javascript
JavaScript 产生不重复的随机数三种实现思路
2012/12/13 Javascript
javascript ie6兼容position:fixed实现思路
2013/04/01 Javascript
给Flash加一个超链接(推荐使用透明层)兼容主流浏览器
2013/06/09 Javascript
7个jQuery最佳实践
2016/01/12 Javascript
Bootstrap 模态框(Modal)带参数传值实例
2017/08/20 Javascript
js装饰设计模式学习心得
2018/02/17 Javascript
解决LayUI表单获取不到data的问题
2018/08/20 Javascript
NodeJS如何实现同步的方法示例
2018/08/24 NodeJs
vue打包相关细节整理(小结)
2018/09/28 Javascript
11个教程中不常被提及的JavaScript小技巧(推荐)
2019/04/17 Javascript
html2canvas属性和使用方法以及如何使用html2canvas将HTML内容写入Canvas生成图片
2020/01/12 Javascript
[55:35]DOTA2-DPC中国联赛 正赛 CDEC vs Dragon BO3 第二场 1月22日
2021/03/11 DOTA
[02:36]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Magma 选手采访
2021/03/11 DOTA
python定向爬取淘宝商品价格
2018/02/27 Python
python print输出延时,让其立刻输出的方法
2019/01/07 Python
利用Python查看微信共同好友功能的实现代码
2019/04/24 Python
python实现滑雪游戏
2020/02/22 Python
django正续或者倒序查库实例
2020/05/19 Python
python实现控制台输出颜色
2021/03/02 Python
英国领先的维生素和补充剂品牌:Higher Nature
2019/08/26 全球购物
韩国乐天网上商城:Lotte iMall
2021/02/03 全球购物
Ibatis如何调用存储过程
2015/05/15 面试题
小学安全工作汇报材料
2014/08/19 职场文书
工作批评与自我批评范文
2014/10/16 职场文书
检讨书大全
2015/01/27 职场文书
2015年秋季学校开学标语
2015/07/16 职场文书
详解MySQL 联合查询优化机制
2021/05/10 MySQL
vue实现可以快进后退的跑马灯组件
2022/04/08 Vue.js
关于vue-router-link选择样式设置
2022/04/30 Vue.js