这篇文章主要介绍了opencv python Canny边缘提取实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

Canny是边缘提取算法,在1986年提出的是一个很好的边缘检测器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()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

本文标题: opencv python Canny边缘提取实现过程解析

本文地址: http://www.cppcns.com/jiaoben/python/299366.html

python canny 保留指定区域的轮廓线_opencv python Canny边缘提取实现过程解析相关推荐

  1. python canny 保留指定区域的轮廓线_opencv python:Canny边缘提取

    Canny是边缘提取算法,在1986年提出的 是一个很好的边缘检测器 Canny算法介绍 非最大信号抑制: 高低阈值连接: example import cv2 as cv import numpy ...

  2. 【python】python实现屏幕指定区域文字提取(百度API)

    因为OCR文字识别功能不是特别好,推荐利用百度API的来实现屏幕指定区域的文字识别. 一.如何注册百度API? 1.打开百度api网页,使用百度账号登陆 2.点击控制台,选择文字识别 3.点击创建应用 ...

  3. python打开鼠标指定文件夹_学会python文件操作,鼠标好像没用了,学习python第10天...

    电影是人类对未来的向往,在<黑客帝国>中,我们看到了一个数字化的社会,而当你学会python文件操作,你也就离你向往的黑客近一点了,用程序来直接影响电脑上的其他文件,只需要几行代码就搞定. ...

  4. python html转TXT python读取html指定区域文本内容转成txt文件

    1.首先,通过python,去将读取遍历程序目录文件夹中,[html]文件夹里面的文件.文件 夹以及子目录.子目录里面的 ,获取到该目录下所有的[.html]文件后,返回一个list对象 2.遍历完成 ...

  5. python如何捕获指定异常_如何捕获Python中的异常

    Python 提供了try except语句捕获并处理异常,该异常处理语句的基本语法结构如下: try: 可能产生异常的代码块 except [(Error1, Error2, ...) [as e] ...

  6. python 句柄窗口指定位置截图_对Python获取屏幕截图的4种方法详解

    Python获取电脑截图有多种方式,具体如下: PIL中的ImageGrab模块 windows API PyQt pyautogui PIL中的ImageGrab模块 import time imp ...

  7. python删除txt指定内容_正则表达式使用python从文件中过滤和删除特定的多行文本...

    我正在编写一个python工具来处理一组文件.该工具将由其他用户而非我使用. 文件类似于以下格式: #Text which I want to keep intact #Lots of text #L ...

  8. python写入csv指定单元格_使用python将值插入csv中的特定单元格

    我想知道是否有办法用python将数据插入到csv文件的特定单元格中.可以说我有变量"数据",它存储值" 300".如何将这些数据添加到csv文件的第3行第2列 ...

  9. python写入csv指定单元格_使用python中的csv模块写入特定单元格

    csv module提供了读取和写入csv文件的工具,但不允许在适当位置修改特定单元. 即使您在问题中突出显示的csvwriter.writerow(行)方法也不允许您识别和覆盖特定行.而是将row参 ...

最新文章

  1. 程序员应该吃透的集合List
  2. 为什么要用这些框架来进行开发,直接new一个对象不香吗?
  3. Linux 4.18 内核新补丁移除了Lustre 文件系统
  4. 殷拓联手红星美凯龙收购软装家具企业“墙尚”40%股份​
  5. DreamWeaver下如何应用CSS样式
  6. [blog摘要]Exploring and Decoding ETW Providers using Event Log Channels
  7. 【BZOJ 3326】[Scoi2013]数数 数位dp+矩阵乘法优化
  8. poj3233(矩阵快速幂的和)
  9. 在线溶氧仪 连接计算机,在线溶氧仪集成设计与数据处理算法分析.pdf
  10. Spring知识点总结-3
  11. Atitit.创建快捷方式 windows快捷方式的原理
  12. VMware Tools 支持 Windows 2000、Windows XP 和 Windows Server 2003 (81466)
  13. 【181129】VC++ 屏幕截取(窗口截图、选区截图)、屏幕拾色器、放大镜源代码
  14. Linux命令之dhclient,dhclient命令 – 动态获取或释放IP地址
  15. 更改iterm2命令行从$到%
  16. Android解决Could not find manifest-merger.jar问题
  17. 火星玩家Mars全球合伙人招募计划启动:为电核户外可持续发展贡献实质力量
  18. 【极简教程】用 Mkdocs 库发布你的网站
  19. 2007年互联网发展趋势预测:RSS将成为主流
  20. OTTO机器人之MAX7219点阵

热门文章

  1. 【定点数运算】定点的乘法和加法
  2. jenkin+docker 构建项目
  3. if(a)与if(a){ }
  4. 非线性最小二乘问题的求解方法(一)
  5. oracle小型机价格内存,案例:IBM aix小型机内存使用太多导致Oracle shared pool 相关lat...
  6. Linux more命令:查看文件
  7. 《存储秘史》之×××北斗
  8. List系列集合、泛型、Set系列集合、Collection系列集合使用场景总结
  9. OpenCV 调包侠:调用本地摄像头人脸识别
  10. 不要再搞混Vue的响应式原理和双向数据绑定了