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函数参数*args**kwargs用法实例
Dec 04 Python
用C++封装MySQL的API的教程
May 06 Python
利用Python破解斗地主残局详解
Jun 30 Python
Python3.6.0+opencv3.3.0人脸检测示例
May 25 Python
使用Python制作简单的小程序IP查看器功能
Apr 16 Python
Python opencv实现人眼/人脸识别以及实时打码处理
Apr 29 Python
对python 中class与变量的使用方法详解
Jun 26 Python
在python中用url_for构造URL的方法
Jul 25 Python
在脚本中单独使用django的ORM模型详解
Apr 01 Python
matplotlib设置颜色、标记、线条,让你的图像更加丰富(推荐)
Sep 25 Python
python实现三阶魔方还原的示例代码
Apr 28 Python
基于Python实现一个春节倒计时脚本
Jan 22 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
《被神捡到的男人》动画化计划进行中!
2020/03/06 日漫
php实现多城市切换特效
2015/08/09 PHP
Windows下php+mysql5.7配置教程
2017/05/16 PHP
PHP SFTP实现上传下载功能
2017/07/26 PHP
php获得刚插入数据的id 的几种方法总结
2018/05/31 PHP
JavaScript 字符串处理函数使用小结
2010/12/02 Javascript
angularJS与bootstrap结合实现动态加载弹出提示内容
2015/10/16 Javascript
XMLHttpRequest Level 2 使用指南
2016/08/26 Javascript
分享JS代码实现鼠标放在输入框上输入框和图片同时更换样式
2016/09/01 Javascript
Vue.Js中的$watch()方法总结
2017/03/23 Javascript
浅谈箭头函数写法在ReactJs中的使用
2017/08/22 Javascript
浅谈Vue内置component组件的应用场景
2018/03/27 Javascript
原生JS实现简单的倒计时功能示例
2018/08/30 Javascript
vue-router权限控制(简单方式)
2018/10/29 Javascript
PostgreSQL Node.js实现函数计算方法示例
2019/02/12 Javascript
微信小程序五子棋游戏AI实现方法【附demo源码下载】
2019/02/20 Javascript
浅谈vue3中effect与computed的亲密关系
2019/10/10 Javascript
Python 文件重命名工具代码
2009/07/26 Python
Python中atexit模块的基本使用示例
2015/07/08 Python
微信跳一跳辅助python代码实现
2018/01/05 Python
python中实现将多个print输出合成一个数组
2018/04/19 Python
PyCharm设置每行最大长度限制的方法
2019/01/16 Python
python 获取域名到期时间的方法步骤
2021/02/10 Python
移动端HTML5 input常见问题(小结)
2020/09/28 HTML / CSS
澳大利亚便宜的家庭购物网站:CrazySales
2018/02/06 全球购物
法国二手MacBook销售网站:Okamac
2019/03/18 全球购物
施华洛世奇巴西官网:SWAROVSKI巴西
2019/12/03 全球购物
个人实用的自我评价范文
2013/11/23 职场文书
单位人事专员介绍信
2014/01/11 职场文书
幼儿园秋游活动方案
2014/01/21 职场文书
节约电力资源的建议书
2014/03/12 职场文书
函授毕业生自我鉴定范文
2014/03/25 职场文书
中学生检讨书1000字
2014/10/28 职场文书
公司年会开场白
2015/06/01 职场文书
2015年基层党建工作汇报材料
2015/06/25 职场文书
《敬重卑微》读后感3篇
2019/11/26 职场文书