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标准库中的wave模块绘制乐谱的简单教程
Mar 30 Python
使用PyInstaller将python转成可执行文件exe笔记
May 26 Python
python使用response.read()接收json数据的实例
Dec 19 Python
PyQT实现菜单中的复制,全选和清空的功能的方法
Jun 17 Python
Pycharm中import torch报错的快速解决方法
Mar 05 Python
keras 实现轻量级网络ShuffleNet教程
Jun 19 Python
PyCharm 2020.1版安装破解注册码永久激活(激活到2089年)
Sep 24 Python
Jupyter Notebook安装及使用方法解析
Nov 12 Python
python sleep和wait对比总结
Feb 03 Python
python在协程中增加任务实例操作
Feb 28 Python
python随机打印成绩排名表
Jun 23 Python
Python中三种花式打印的示例详解
Mar 19 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 特殊字符处理函数
2008/09/05 PHP
php安全之直接用$获取值而不$_GET 字符转义
2012/06/03 PHP
Win2003+apache+PHP+SqlServer2008 配置生产环境
2014/07/29 PHP
php实现的用户查询类实例
2015/06/18 PHP
php获取文件名称和扩展名的方法
2017/02/07 PHP
windows下的WAMP环境搭建图文教程(推荐)
2017/07/27 PHP
PHP多线程模拟实现秒杀抢单
2018/02/07 PHP
php实现单笔转账到支付宝功能
2018/10/09 PHP
来自国外的页面JavaScript文件优化
2010/12/08 Javascript
chrome原生方法之数组
2011/11/30 Javascript
ajax java 实现自动完成功能
2012/12/19 Javascript
JQuery使用$.ajax和checkbox实现下次不在通知功能
2015/04/16 Javascript
JQuery实现网页右侧随动广告特效
2016/01/17 Javascript
JQueryEasyUI之DataGrid数据显示
2016/11/23 Javascript
vue-cli入门之项目结构分析
2017/04/20 Javascript
老生常谈Bootstrap媒体对象
2017/07/06 Javascript
vue-resource请求实现http登录拦截或者路由拦截的方法
2018/07/11 Javascript
使用原生js编写一个简单的框选功能方法
2019/05/13 Javascript
独立部署小程序基于nodejs的服务器过程详解
2019/06/24 NodeJs
[14:25]教你分分钟做大人:主宰(HEROS)
2014/12/08 DOTA
使用Python的Scrapy框架十分钟爬取美女图
2016/12/26 Python
Java实现的执行python脚本工具类示例【使用jython.jar】
2018/03/29 Python
使用python itchat包爬取微信好友头像形成矩形头像集的方法
2019/02/21 Python
python实现转圈打印矩阵
2019/03/02 Python
Python-openCV读RGB通道图实例
2020/01/17 Python
pandas和spark dataframe互相转换实例详解
2020/02/18 Python
Python Socketserver实现FTP文件上传下载代码实例
2020/03/27 Python
Python 抓取数据存储到Redis中的操作
2020/07/16 Python
全球最大的跑步用品商店:Road Runner Sports
2016/09/11 全球购物
Regatta官网:英国最受欢迎的户外服装和鞋类品牌
2019/05/01 全球购物
领导证婚人证婚词
2014/01/13 职场文书
转让协议书范本
2014/04/15 职场文书
三年级学生评语
2014/04/23 职场文书
详解CSS玩转图片Base64编码
2021/05/25 HTML / CSS
使用 DataAnt 监控 Apache APISIX的原理解析
2022/07/07 Servers
Sentry的安装、配置、使用教程(Sentry日志手机系统)
2022/07/23 Python